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" на узле сети.

Request:

{
    "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.