script.execute
Описание
object script.execute(object parameters)
Этот метод позволяет запускать скрипт на узле сети или событии. Исключение составляют скрипты типа 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.