object script.execute(object parameters)
此方法允许在一个主机或事件上run脚本,但URL类型的脚本除外,这些脚本不可执行。
此方法适用于任何类型的用户。可以在用户角色设置中撤销调用该方法的权限。有关更多信息,请参见User roles。
(object) 包含要运行的脚本的 ID 的参数,要么 主机 的 ID 或事件的 ID 以及手动输入值。
参数 | 数据类型 | 描述 |
---|---|---|
scriptid | ID | 要运行的脚本的ID。 参数行为: - 必填 |
hostid | ID | 要在其上run脚本的主机的ID。 参数行为: - 如果未设置 eventid ,则为必填 |
eventid | ID | 要在上run脚本的 事件 的 ID。 参数行为: - 如果未设置 hostid ,则为必填 |
manualinput | string | 用户提供的值用于通过 run 向脚本传递参数,替换 的 {MANUALINPUT} 宏。 |
(object)
返回脚本执行的结果。
属性 | 数据类型 | 描述 |
---|---|---|
response | string | 脚本是否已run成功。 可能的值 - success 。 |
value | string | 脚本输出。 |
debug | object | 如果执行了webhook脚本,则包含一个调试 object。对于其他类型的脚本,它包含空的object。 |
运行一个 webhook 脚本,将 HTTP 请求发送到外部服务。
执行请求:
{
"jsonrpc": "2.0",
"method": "script.execute",
"params": {
"scriptid": "4",
"hostid": "30079"
},
"id": 1
}
响应:
{
"jsonrpc": "2.0",
"result": {
"response": "success",
"value": "{\"status\":\"sent\",\"timestamp\":\"1611235391\"}",
"debug": {
"logs": [
{
"level": 3,
"ms": 480,
"message": "[Webhook Script] HTTP status: 200."
}
],
"ms": 495
}
},
"id": 1
}
在 一个主机 上运行 "ping" 脚本。
执行请求:
{
"jsonrpc": "2.0",
"method": "script.execute",
"params": {
"scriptid": "1",
"hostid": "30079"
},
"id": 1
}
响应:
{
"jsonrpc": "2.0",
"result": {
"response": "success",
"value": "PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.074 ms\n64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.030 ms\n64 bytes from 127.0.0.1: icmp_req=3 ttl=64 time=0.030 ms\n\n--- 127.0.0.1 ping statistics ---\n3 packets transmitted, 3 received, 0% packet loss, time 1998ms\nrtt min/avg/max/mdev = 0.030/0.044/0.074/0.022 ms\n",
"debug": []
},
"id": 1
}
在 一个主机 上运行命令为 "ping -c {MANUALINPUT} {HOST.CONN}; case $? in [01]) true;; *) false;; esac" 的 "ping" 脚本。
执行请求:
{
"jsonrpc": "2.0",
"method": "script.execute",
"params": {
"scriptid": "7",
"hostid": "30079",
"manualinput": "2"
},
"id": 1
}
响应:
{
"jsonrpc": "2.0",
"result": {
"response": "success",
"value": "PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.\n64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.051 ms\n64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.025 ms\n\n--- 127.0.0.1 ping statistics ---\n2 packets transmitted, 2 received, 0% packet loss, time 1021ms\nrtt min/avg/max/mdev = 0.025/0.038/0.051/0.013 ms",
"debug": []
},
"id": 1
}
在 ui/include/classes/api/services/CScript.php 中的 CScript::execute()。