Go Command Agent

很多时候大家需要去某个服务器上去执行一段命令或者上传/下载一个文件,这个命令还可能是时间比较久的,不想一直等在那里,特别是内网里面,不要复杂的认证,比如CICD里面,这时候大家可以使用这个command agent部署在server上,从而通过rest api来轻松的执行命令。

github:GodQ/go-rest-agent (github.com)

这个agent是使用Go编写的,提供了多种OS/CPU的版本,可以拿来即用。

部署命令:

复制代码
nohup ./agent_linux_amd64 5000 &

下面是这个agent的5个api:

Agent API Example

Post File

复制代码
curl -L -XPOST '127.0.0.1:5000/api/v1/file' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-F 'target_path="/tmp/aaa.yaml"' \
-F 'file=@"/Users/GodQ/a.yaml"'

response:

复制代码
{
    "message": "Upload file successfully"
}

Get File

复制代码
curl -L '127.0.0.1:5000/api/v1/file?file_path=%2Ftmp%2Faaa.yaml' \
-H 'Content-Type: application/x-www-form-urlencoded'

response:

复制代码
<file content>

Post Command Request Task

复制代码
curl -L -XPOST '127.0.0.1:5000/api/v1/tasks' \
-H 'Content-Type: application/json' \
-d '{
    "command": "date; sleep 5; date",
    "timeout_seconds": 6
}'

response:

复制代码
{
    "task_id": 1,
    "command": "date; sleep 5; date",
    "timeout_seconds": 6,
    "retry_count": 0,
    "extra": "",
    "key": "",
    "callback_url": "",
    "status": "doing",
    "return_code": 0,
    "error_msg": "",
    "start_time": "0001-01-01T00:00:00Z",
    "end_time": "0001-01-01T00:00:00Z",
    "duration": 0,
    "log_redis_key": "",
    "log_redis_url": "",
    "thread_name": "",
    "stdout": ""
}

List Tasks

复制代码
curl -L '127.0.0.1:5000/api/v1/tasks'

response:

复制代码
{
    "1": {
        "task_id": 1,
        "command": "date; sleep 5; date",
        "timeout_seconds": 6,
        "retry_count": 0,
        "extra": "",
        "key": "",
        "callback_url": "",
        "status": "done",
        "return_code": 0,
        "error_msg": "",
        "start_time": "2023-11-13T11:06:50.863401+08:00",
        "end_time": "2023-11-13T11:06:55.971313+08:00",
        "duration": 5,
        "log_redis_key": "",
        "log_redis_url": "",
        "thread_name": "",
        "stdout": "Mon Nov 13 11:06:50 CST 2023\nMon Nov 13 11:06:55 CST 2023\n"
    }
}

Get Task by ID

复制代码
curl -L '127.0.0.1:5000/api/v1/tasks?task_id=1'

response:

复制代码
{
    "1": {
        "task_id": 1,
        "command": "date; sleep 5; date",
        "timeout_seconds": 6,
        "retry_count": 0,
        "extra": "",
        "key": "",
        "callback_url": "",
        "status": "done",
        "return_code": 0,
        "error_msg": "",
        "start_time": "2023-11-13T11:06:50.863401+08:00",
        "end_time": "2023-11-13T11:06:55.971313+08:00",
        "duration": 5,
        "log_redis_key": "",
        "log_redis_url": "",
        "thread_name": "",
        "stdout": "Mon Nov 13 11:06:50 CST 2023\nMon Nov 13 11:06:55 CST 2023\n"
    }
}
相关推荐
爱奥尼欧1 小时前
【Linux 系统】基础IO——Linux中对文件的理解
linux·服务器·microsoft
超喜欢下雨天1 小时前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
tan77º2 小时前
【Linux网络编程】网络基础
linux·服务器·网络
笑衬人心。3 小时前
Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
linux·mysql·ubuntu
代码讲故事4 小时前
多种方法实现golang中实现对http的响应内容生成图片
开发语言·chrome·http·golang·图片·快照·截图
chanalbert4 小时前
CentOS系统新手指导手册
linux·运维·centos
星宸追风5 小时前
Ubuntu更换Home目录所在硬盘的过程
linux·运维·ubuntu
热爱生活的猴子5 小时前
Poetry 在 Linux 和 Windows 系统中的安装步骤
linux·运维·windows
myloveasuka5 小时前
[Linux]内核如何对信号进行捕捉
linux·运维·服务器
m0_694845576 小时前
服务器需要备案吗?在哪些地区需要备案?
linux·运维·服务器·云计算