[comment]: # translation:outdated

[comment]: # ({d53fbea3-d53fbea3})
# 10 Execução de comandos

O Zabbix usa uma funcionalidade em comum para executar parâmetros de
usuários, comandos remotos, `system.run[]` sem a flag "nowait", scripts
(alerta, externos e globais) e outros comandos internos.

O comando/script é executado de forma similar nas plataformas UNIX e
Windows:

1.  Zabbix (um de seus processos) cria uma ponte para comunicação
2.  Zabbix configura a pote como a saída para o processo a ser criado
3.  Zabbix cria o processo filho (executa o comando/script)
4.  Um novo grupo de processos (no Unix) ou um 'job' (no Windows) é
    criado para os processos filhos
5.  O Zabbix lê do 'pipe' até que o 'timeout' seja alcançado ou que
    ninguém esteja mais gravando nele (Todos os
    gerenciadores/descritores de arquivo tiverem sido fechados). Observe
    que o processo filho pode criar mais processos e sair antes de ter
    saido ou fechado o descritor de arquivo.
6.  Se o tempo limite não tiver sido alcançado o Zabbix aguarda até que
    o processo saia ou que o timeout ocorra
7.  Neste ponto nós estamos assumindo que tudo foi executado com sucesso
    e toda a árvore de processos foi terminada

::: noteimportant
Os passos 5-7 não se referem a comandos remotos
executados com a flag "nowait".
:::

::: noteimportant
O Zabbix entende que o comando/script foi
concluido quando o processo inicial é finalizado E não existe outro
processo que continue gerenciando os descritores de arquivos abertos.
Quando o processamento é concluído todos os processos que foram criados
são terminados.
:::

Todas as aspas duplas e contrabarras no comando serão escapadas com
contrabarras e o comando será executado entre aspas duplas.

Leia mais sobre isso nos manuais de [parâmetros de
usuário](/pt/manual/config/items/userparameters), [comandos
remotos](/pt/manual/config/notifications/action/operation/remote_command),
[scripts de alerta](/pt/manual/config/notifications/media/script).

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

[comment]: # ({a11705f0-a11705f0})
#### Etapas de execução

O comando/script é executado de forma semelhante no Unix e no Windows
plataformas:

1. Zabbix (o processo pai) cria um canal para comunicação
2. Zabbix define o pipe como saída para o filho a ser criado
    processar
3. Zabbix cria o processo filho (executa o comando/script)
4. Um novo grupo de processos (no Unix) ou um trabalho (no Windows) é criado para
    o processo filho
5. Zabbix lê do pipe até que o tempo limite ocorra ou ninguém esteja escrevendo
    para a outra extremidade (TODOS os identificadores/descritores de arquivo foram fechados).
    Observe que o processo filho pode criar mais processos e sair
    antes de sair ou fechar o descritor de identificador/arquivo.
6. Se o tempo limite não for atingido, o Zabbix espera até que o
    o processo filho é encerrado ou ocorre o tempo limite
7. Se o processo filho inicial foi encerrado e o tempo limite não foi
    alcançado, o Zabbix verifica o código de saída do processo filho inicial e
    compara com 0 (valor diferente de zero é considerado como falha de execução,
    apenas para scripts de alerta personalizados, comandos remotos e scripts de usuário
    executado no servidor Zabbix e proxy Zabbix)
8. Neste ponto, assume-se que tudo está feito e todo o
    árvore de processos (ou seja, o grupo de processos ou o trabalho) é encerrado

::: não importante
O Zabbix assume que um comando/script foi feito
processamento quando o processo filho inicial saiu E nenhum outro
processo ainda está mantendo o identificador de saída/descritor de arquivo aberto. Quando
processamento é feito, TODOS os processos criados são finalizados.
:::

Todas as aspas duplas e barras invertidas no comando são escapadas com
barras invertidas e o comando é colocado entre aspas duplas.

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

[comment]: # ({5bd8554b-ddd381e9})
#### Verificação de código de saída

O código de saída é verificado com as seguintes condições:

- Apenas para scripts de alerta personalizados, comandos remotos e scripts de usuário
    executado no servidor Zabbix e no proxy Zabbix.
- Qualquer código de saída diferente de 0 é considerado como execução
    falha.
- Conteúdo de erro padrão e saída padrão para execuções com falha
    são coletados e disponibilizados no frontend (onde o resultado da execução é
    exibido).
- Entrada de log adicional é criada para comandos remotos no servidor Zabbix
    para salvar a saída de execução do script e pode ser ativado usando
    Agente LogRemoteCommands
    [parâmetro](/manual/apêndice/config/zabbix_agentd).

Possíveis mensagens de front-end e entradas de log para comandos/scripts com falha:

- Conteúdo de erro padrão e saída padrão para execuções com falha
    (caso existam).
- "Processo encerrado com código: N." (para saída vazia e código de saída não
    igual a 0).
- "Processo encerrado por sinal: N." (para processo terminado por um sinal,
    somente no Linux).
- "Processo finalizado inesperadamente." (para processo encerrado por
    razões desconhecidas).

-------------------------------------------------- -----------------------

Leia mais sobre:

- [Externo
    verificações](/manual/config/items/itemtypes/external#external_check_result)
- [Parâmetros do usuário](/manual/config/items/userparameters)
- [system.run](/manual/config/items/itemtypes/zabbix_agent) itens
- [Scripts de alerta personalizados](/manual/config/notifications/media/script)
-   [Controlo remoto
    comandos](/manual/config/notifications/action/operation/remote_command)
- [Global
    scripts](/manual/web_interface/frontend_sections/administration/scripts)

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

[comment]: # ({new-30b515b2})
#### See also

-   [External checks](/manual/config/items/itemtypes/external#external_check_result)
-   [User parameters](/manual/config/items/userparameters)
-   [system.run](/manual/config/items/itemtypes/zabbix_agent) items
-   [Custom alert scripts](/manual/config/notifications/media/script)
-   [Remote commands](/manual/config/notifications/action/operation/remote_command)
-   [Global scripts](/manual/web_interface/frontend_sections/alerts/scripts)

[comment]: # ({/new-30b515b2})
