script.execute

Description

object script.execute(object parameters)

Cette méthode permet d’exécuter un script sur un hôte ou un événement. À l’exception des scripts de type URL. Ceux-ci ne sont pas exécutables.

Cette méthode est disponible pour les utilisateurs de tout type. Les autorisations d’appel de la méthode peuvent être révoquées dans les paramètres du rôle utilisateur. Voir User roles pour plus d’informations.

Paramètres

(object) Paramètres contenant l’ID du script à exécuter, ainsi que soit l’ID de l’hôte, soit l’ID de l’événement et la valeur manualinput.

Paramètre Type Description
scriptid ID ID du script à exécuter.

Comportement du paramètre :
- obligatoire
hostid ID ID de l’hôte sur lequel exécuter le script.

Comportement du paramètre :
- obligatoire si eventid n’est pas défini
eventid ID ID de l’événement sur lequel exécuter le script.

Comportement du paramètre :
- obligatoire si hostid n’est pas défini
manualinput string Valeur fournie par l’utilisateur pour exécuter le script, remplaçant
la macro {MANUALINPUT}.

Valeurs de retour

(object) Renvoie le résultat de l’exécution du script.

Propriété Type Description
response string Indique si le script a été exécuté avec succès.

Valeur possible - success.
value string Sortie du script.
debug object Contient un objet debug si un script webhook est exécuté. Pour les autres types de scripts, contient un objet vide.

Exemples

Exécuter un script webhook

Exécutez un script webhook qui envoie une requête HTTP à un service externe.

Requête:

{
    "jsonrpc": "2.0",
    "method": "script.execute",
    "params": {
        "scriptid": "4",
        "hostid": "30079"
    },
    "id": 1
}

Réponse :

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

Exécuter un script personnalisé

Exécutez un script « ping » sur un hôte.

Requête:

{
    "jsonrpc": "2.0",
    "method": "script.execute",
    "params": {
        "scriptid": "1",
        "hostid": "30079"
    },
    "id": 1
}

Réponse :

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

Exécuter un script personnalisé avec une entrée manuelle

Exécutez un script « ping » avec la commande « ping -c {MANUALINPUT} {HOST.CONN}; case $? in [01]) true;; *) false;; esac » sur un hôte.

Requête :

{
    "jsonrpc": "2.0",
    "method": "script.execute",
    "params": {
        "scriptid": "7",
        "hostid": "30079",
        "manualinput": "2"
    },
    "id": 1
}

Réponse :

{
    "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",
        "debug": []
    },
    "id": 1
}

Source

CScript::execute() dans ui/include/classes/api/services/CScript.php.