这是一个服务器节点代理程序,可以接收指令并执行任务,同时提供系统资源信息。
- 通过HTTP API对外提供服务器系统信息(内存、CPU使用率)
- 接收并执行客户端下发的任务
- 安全认证机制,使用安全密钥保护API访问
- 支持作为系统服务运行
- 提供命令行工具管理服务
go build -o checkin-agent./checkin-agent初次运行会自动创建配置文件和生成安全密钥。
--config:指定配置文件路径(默认:./agent_config.json)--version:显示版本信息--regenerate-key:重新生成安全密钥--install-service:安装为系统服务(仅Linux)--uninstall-service:卸载系统服务(仅Linux)--service-status:查看服务状态(仅Linux)
在Linux系统上安装为服务(需要root权限):
sudo ./checkin-agent --install-service然后可以使用systemctl管理服务:
# 启动服务
systemctl start checkin-agent
# 设置开机自启
systemctl enable checkin-agent
# 查看服务状态
systemctl status checkin-agent
# 停止服务
systemctl stop checkin-agentGET /api/system/info
需要在请求中提供安全密钥(HTTP头X-Secure-Key或JSON/表单参数secure_key)。
返回系统信息,包括:
- 总内存(MB,整数)
- 已使用内存(MB,整数)
- 内存使用率(百分比,保留两位小数)
- CPU使用率(百分比,保留两位小数)
POST /api/task/execute
请求体:
{
"type": "任务类型",
"command": "任务命令",
"secure_key": "安全密钥"
}支持的任务类型:
1: 执行curl命令,安全解析并执行HTTP请求(支持忽略SSL验证)2: Node.js命令执行(尚未实现)3: Python命令执行(尚未实现) 这里我的想法是用类似dify的docker沙盒去执行代码,防止有问题的代码
注意:
- curl命令会被智能解析而不是直接执行,可以安全地处理URL中的特殊字符(&、|、$等)、JSON数据等
- 不允许使用分号(;)来链接多个命令
- 支持标准curl选项如
-H(设置头信息)、-d(发送数据)、-X(设置请求方法)、-k(忽略SSL验证)等 - 可以传递复杂的JSON或包含特殊字符的参数,因为系统会正确解析引号内的内容
GET /api/health
检查服务是否正常运行。
配置文件为JSON格式,默认路径为./agent_config.json:
{
"secure_key": "生成的安全密钥",
"port": 8080
}- 所有API请求都需要提供有效的安全密钥
- 安全密钥在初次运行时自动生成,也可以使用命令重新生成
- 建议将配置文件权限设置为仅管理员可读