[comment]: # translation:outdated

[comment]: # ({b398ca99-d53fbea3})
# 9 Esecuzione dei comandi

Zabbix utilizza funzionalità comuni per i controlli esterni, i parametri utente,
gli item system.run, gli script di avviso personalizzati, i comandi remoti e gli
script globali.

[comment]: # ({/b398ca99-d53fbea3})

[comment]: # ({2e61fefc-a11705f0})
#### Fasi di esecuzione

:::noteclassic
Per impostazione predefinita, tutti gli script in Zabbix vengono eseguiti utilizzando la shell *sh*,
e non è possibile modificare la shell predefinita. Per utilizzare una shell diversa,
è possibile adottare una soluzione alternativa: creare un file di script e richiamarlo durante l'esecuzione del comando.
:::

Il comando/script viene eseguito in modo simile sia sulle piattaforme Unix che Windows:

1.  Zabbix (il processo padre) crea una pipe per la comunicazione
2.  Zabbix imposta la pipe come output per il processo figlio da creare
3.  Zabbix crea il processo figlio (esegue il comando/script)
4.  Viene creato un nuovo gruppo di processi (in Unix) o un job (in Windows) per il processo figlio
5.  Zabbix legge dalla pipe finché non si verifica il timeout oppure finché nessuno scrive più all'altra estremità (TUTTI gli handle/file descriptor sono stati chiusi).
    Si noti che il processo figlio può creare altri processi e terminare
    prima che questi terminino o chiudano l'handle/file descriptor.
6.  Se il timeout non è stato raggiunto, Zabbix attende finché il processo figlio iniziale non termina oppure finché non si verifica il timeout
7.  Se il processo figlio iniziale è terminato e il timeout non è stato raggiunto,
    Zabbix controlla il codice di uscita del processo figlio iniziale e
    lo confronta con 0 (un valore diverso da zero è considerato un errore di esecuzione,
    solo per gli script di avviso personalizzati, i comandi remoti e gli script utente
    eseguiti su Zabbix server e Zabbix proxy)
8.  A questo punto si presume che tutto sia stato completato e l'intero
    albero dei processi (cioè il gruppo di processi o il job) viene terminato

::: noteimportant
Zabbix presume che un comando/script abbia completato
l'elaborazione quando il processo figlio iniziale è terminato E nessun altro
processo mantiene ancora aperto l'handle/file descriptor di output. Quando
l'elaborazione è completata, TUTTI i processi creati vengono terminati.
:::

Tutte le virgolette doppie e le barre rovesciate nel comando vengono precedute da una barra rovesciata di escape e il comando viene racchiuso tra virgolette doppie.

[comment]: # ({/2e61fefc-a11705f0})

[comment]: # ({f466cd79-ddd381e9})
#### Controllo del codice di uscita

I codici di uscita vengono controllati secondo le seguenti condizioni:

-   Solo per script di avviso personalizzati, comandi remoti e script utente
    eseguiti su Zabbix server e Zabbix proxy.
-   Qualsiasi codice di uscita diverso da 0 è considerato un errore di
    esecuzione.
-   Il contenuto dell'errore standard e dell'output standard per le esecuzioni
    non riuscite viene raccolto ed è disponibile nel frontend (dove viene
    visualizzato il risultato dell'esecuzione).
-   È possibile creare una voce di log aggiuntiva per i comandi remoti eseguiti su Zabbix agent/proxy
    abilitando il parametro LogRemoteCommands su [agent](/manual/appendix/config/zabbix_agentd#logremotecommands)/[proxy](/manual/appendix/config/zabbix_proxy#logremotecommands).

Possibili messaggi nel frontend e voci di log per comandi/script non riusciti:

-   Contenuto dell'errore standard e dell'output standard per le esecuzioni
    non riuscite (se presente).
-   "Il processo è terminato con il codice: N." (per output vuoto e codice di uscita
    diverso da 0).
-   "Il processo è stato terminato dal segnale: N." (per processi terminati da un segnale,
    solo su Linux).
-   "Il processo è terminato in modo imprevisto." (per processi terminati per
    motivi sconosciuti).

[comment]: # ({/f466cd79-ddd381e9})

[comment]: # ({9bbf0e66-35a7f666})
#### Vedi anche

-   [Controlli esterni](/manual/config/items/itemtypes/external#external-check-result)
-   [Parametri utente](/manual/config/items/userparameters)
-   item [system.run](/manual/config/items/itemtypes/zabbix_agent#system.run)
-   [Script di avviso personalizzati](/manual/config/notifications/media/script)
-   [Comandi remoti](/manual/config/notifications/action/operation/remote_command)
-   [Script globali](/manual/web_interface/frontend_sections/alerts/scripts)

[comment]: # ({/9bbf0e66-35a7f666})
