httprun是一个基于HTTP API的Shell命令API网关,可以将内部的Shell脚本通过HTTP API的形式向外部开放,方便外部人员调用,而无需登录到服务器。
- 自定义上传参数:支持自定义上传参数,使调用者可以根据需要传递不同的参数给Shell脚本。
- 接口鉴权:支持接口鉴权机制,确保只有经过授权的用户才能调用Shell脚本。
- 自定义命令执行:可以自定义要执行的Shell命令,灵活适应不同的需求。
- WEB UI:提供Web界面,方便通过图形化界面管理和调用Shell脚本。
- RESTful接口:提供符合RESTful设计风格的接口,方便通过编程方式调用Shell脚本。
- 克隆本项目
git clone https://github.com/raojinlin/httprun
- 运行项目
go run .
- 创建 Admin API Token
$ go run ./cmd/httprun-admin/main.go
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6dHJ1ZSwiZXhwIjoxNzE1OTk0NTQyLCJpYXQiOjE3MTM0MDI1NDIsIm5hbWUiOiJhZG1pbiIsInN1YiI6ImFkbWluIn0.Dq3j-hH2axl-KqKSqROTNvIGWlL-ZtOHQ4Ma2o1P9jw
该命令会创建一个admin权限的API Token
# JWT token secret
JWT_SECRET=<YOUR_JWT_SECRET>
# Webapp build directory
WEBAPP_BUILD_DIR=./webapp/build
- 在浏览器访问 http://127.0.0.1:8081/admin
- 输入第4步生成的token
- 设置命令名称(唯一)
- 添加描述
- 添加命令内容
- 描述:用于指定要执行的命令,支持使用 Go 模板进行渲染。模板中可以包含 params 中定义的变量,以便动态生成命令。
- 示例:假设有一个参数 target和count,其值为 example.com和4,则模板
ping {{.target}} -c {{.count}}
将被渲染为ping example.com -c 4
。 - 注意事项:确保命令模板中的变量在 params 中有定义,否则模板渲染可能会失败。
- 添加命令参数
- 添加环境变量
- 点击创建命令
- 进入命令管理页面
- 选择要运行的命令,点击【运行命令】
为每个用户设置API Token。控制用户可以访问哪些命令。
- 进入Token管理页面
- 点击添加Token按钮
- 设置用户名
- 选择用户可以访问的命令
- 设置token过期时间
- 点击创建Token
- 将Token分发给用户