Agent program installed on remote host, help you to execute shell command on the remote host via HTTP. Also help to transport file to/from remote host.
Shell Agent, is a program installed on remote host, help you to execute shell command on the remote host.
This agent can also help to transport file to/from remote host.
go build
./shell_agent
Now you can visit the agent via 8080 port.
The usage is simple:
Shell Agent.
Usage:
shell_agent [--cnf=<path>] [--addr=<addr>]
shell_agent -h | --help
shell_agent --version
Options:
--cnf=<path> config file path [default: ].
--addr=<addr> config file path [default: :8080].
There are two ways to execute command on remote host: sync(is default) and async.
Type the following curl request will hang and wait for sleep 5
to finish.
curl -d '{"cmd":"sleep 5 && echo test sleep"}' http://127.0.0.1:8080/api/v1/cmd/run
{"errno":0,"error":"succeed","data":{"id":"bda8616a-0179-4c54-468b-918e15112006","status":"finished","error":"","cmd":"sleep 600 \u0026\u0026 echo test sleep","env":null,"stdout":"test sleep\n","stderr":"","exit_code":0,"pid":10266,"create_time":"2018-02-25T19:01:32.870915989+08:00","finish_time":"2018-02-25T19:11:32.875958476+08:00"}}
Take a careful look at the response:
{
"errno": 0,
"error": "succeed",
"data": {
"id": "bda8616a-0179-4c54-468b-918e15112006",
"status": "finished",
"error": "",
"cmd": "sleep 600 && echo test sleep",
"env": null,
"stdout": "test sleep\n",
"stderr": "",
"exit_code": 0,
"pid": 10266,
"create_time": "2018-02-25T19:01:32.870915989+08:00",
"finish_time": "2018-02-25T19:11:32.875958476+08:00"
}
}
The returned http response contain:
Type the following curl request will not hang and return immediately. The returned http response only contain the job id, which can be use to query job progress.
curl -d '{"cmd":"sleep 600 && echo test sleep", "async":true}' http://127.0.0.1:8080/api/v1/cmd/run
{"errno":0,"error":"succeed","data":{"id":"3dcb8bb9-5aab-4a5c-7575-fa11294d2dff","create_time":"2018-02-25T19:38:38.539287299+08:00"}}
The returned http response contain:
You can use the job id to query the job info:
curl http://127.0.0.1:8080/api/v1/cmd/query?id=3dcb8bb9-5aab-4a5c-7575-fa11294d2dff
You can cancel a runnning job:
curl http://127.0.0.1:8080/api/v1/cmd/cancel?id=3dcb8bb9-5aab-4a5c-7575-fa11294d2dff
You can get all jobs ordered by create time desc:
curl http://127.0.0.1:8080/api/v1/cmd/list