script.execute

Описание

object script.execute(параметры объекта)

Этот метод позволяет запустить скрипт на хосте или событии. За исключением скриптов типа URL. Они не являются исполняемыми.

Этот метод доступен пользователям любого типа. Разрешения на вызов метода можно отозвать в настройках ролей пользователя. Дополнительную информацию см. в разделе Роли пользователей.

Параметры

(object) Параметры, содержащие ID скрипта для запуска, а также либо ID узла сети, либо ID события и значение manualinput.

Параметр Type Описание
scriptid ID ID скрипта для запуска.

Поведение параметра:
- обязательный
hostid ID ID узла сети, на котором нужно запустить скрипт.

Поведение параметра:
- обязательный, если eventid не задан
eventid ID ID события, для которого нужно запустить скрипт.

Поведение параметра:
- обязательный, если hostid не задан
manualinput string Значение, предоставленное пользователем для запуска скрипта, подставляемое
в макрос {MANUALINPUT}.

Возвращаемые значения

(object) Возвращает результат выполнения скрипта.

Свойство Type Описание
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
}

Ответ:

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