script.execute
Описание
object script.execute(параметры объекта)
Этот метод позволяет запустить скрипт на хосте или событии. За исключением скриптов типа URL. Они не являются исполняемыми.
Этот метод доступен пользователям любого типа. Разрешения на вызов метода можно отозвать в настройках ролей пользователя. Дополнительную информацию см. в разделе Роли пользователей.
Параметры
(object) Параметры, содержащие ID скрипта для запуска, либо
ID узла сети, либо ID события и значение manualinput.
| Параметр | Тип | Описание |
|---|---|---|
| scriptid | ID | ID скрипта для запуска. Поведение параметра: - обязательно |
| hostid | ID | ID узла сети, на котором нужно запустить скрипт. Поведение параметра: - обязательно, если eventid не задан |
| eventid | ID | ID события, на котором нужно запустить скрипт. Поведение параметра: - обязательно, если hostid не задан |
| manualinput | string | Значение, предоставленное пользователем, с которым нужно запустить скрипт, подставляя макрос {MANUALINPUT}. |
Возвращаемые значения
(object) Возвращает результат выполнения скрипта.
| Property | Type | Description |
|---|---|---|
| response | string | Указывает, был ли скрипт выполнен успешно. Возможное значение - success. |
| value | string | Вывод скрипта. |
| debug | object | Содержит объект debug, если выполняется скрипт вебхука. Для других типов скриптов содержит пустой объект. |
Примеры
Выполнить вебхук-скрипт
Выполните вебхук-скрипт, который отправляет 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" с командой "ping -c {MANUALINPUT} {HOST.CONN}; case $? in [01]) true;; *) false;; esac" на узле сети.
{
"jsonrpc": "2.0",
"method": "script.execute",
"params": {
"scriptid": "7",
"hostid": "30079",
"manualinput": "2"
},
"id": 1
}
Response:
{
"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\n",
"debug": []
},
"id": 1
}
Источник
CScript::execute() в ui/include/classes/api/services/CScript.php.