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

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.