3 Scripts
Visão geral
Na seção Alerts > Scripts, scripts globais definidos pelo usuário podem ser configurados e mantidos.
Este menu está disponível apenas para usuários do tipo SuperAdmin.
Os scripts globais, dependendo do escopo configurado e também das permissões do usuário, estão disponíveis para execução:
- A partir do menu do host em vários locais do frontend (Dashboard, Problems, Latest data, Maps, etc.).
- A partir do menu de eventos.
- Podem ser executados como uma operação de ação.
Os scripts são executados no Zabbix agent, Zabbix server (proxy) ou apenas no Zabbix server Veja também Execução de comandos.
Tanto no Zabbix agent quanto no Zabbix proxy, scripts remotos estão desabilitados por padrão. Eles podem ser habilitados por meio de:
- Para comandos remotos executados no Zabbix agent:
- adicionando um parâmetro AllowKey=system.run[<command>,*] para cada comando permitido na configuração do agent, * representa os modos wait e nowait;
- Para comandos remotos executados no Zabbix proxy:
- Aviso: não é necessário habilitar comandos remotos no Zabbix proxy se os comandos remotos forem executados no Zabbix agent monitorado pelo Zabbix proxy. Se, no entanto, for necessário executar comandos remotos no Zabbix proxy, defina o parâmetro EnableRemoteCommands como '1' na configuração do proxy.
A execução de scripts globais no Zabbix server pode ser desabilitada definindo EnableGlobalScripts=0 na configuração do server.
Para novas instalações, desde o Zabbix 7.0, a execução de scripts globais no Zabbix server é desabilitada por padrão.
Uma lista dos scripts existentes com seus detalhes é exibida.

Dados exibidos:
| Column | Description |
|---|---|
| Name | Nome do script. Clicar no nome do script abre o formulário de configuração do script. |
| Scope | Escopo do script - operação de ação, ação manual de host ou ação manual de evento. Essa configuração determina onde o script está disponível - em comandos remotos de operações de ação, no menu do host ou no menu de eventos, respectivamente. |
| Used in actions | Todas as ações em que o script é usado são exibidas, (desde o Zabbix 7.0.4) precedidas pelo número total dessas ações. Clicar no nome da ação abre o formulário de configuração da ação. Se o usuário não tiver permissões para a ação, o nome não será clicável. |
| Type | O tipo de script é exibido - comando URL, Webhook, Script, SSH, Telnet ou IPMI. |
| Execute on | É exibido se o script será executado no Zabbix agent, Zabbix proxy ou server, ou apenas no Zabbix server. |
| Commands | Todos os comandos a serem executados dentro do script são exibidos. Nada é exibido aqui para webhooks. |
| User group | O grupo de usuários para o qual o script está disponível é exibido (ou All para todos os grupos de usuários). |
| Host group | O grupo de hosts para o qual o script está disponível é exibido (ou All para todos os grupos de hosts). |
| Host access | O nível de permissão para o grupo de hosts é exibido - Read ou Write. Somente usuários com o nível de permissão exigido terão acesso à execução do script. |
Para configurar um novo script, clique no botão Create script no canto superior direito.
Opções de edição em massa
Um botão abaixo da lista oferece uma opção de edição em massa:
- Delete - exclui os scripts
Para usar essa opção, marque as caixas de seleção antes dos respectivos scripts e clique em Delete.
Usando o filtro
Você pode usar o filtro para exibir apenas os scripts de seu interesse. Para melhor desempenho na pesquisa, os dados são pesquisados com macros não resolvidas.
O link Filter está disponível acima da lista de scripts. Se você clicar nele, um filtro ficará disponível, no qual você pode filtrar scripts por nome e escopo.

Configurando um script global

Recomenda-se usar funções de macro em vez de macros simples em scripts globais para aumentar a segurança, pois as macros não são escapadas automaticamente.
Atributos do script:
| Parâmetro | Descrição | |
|---|---|---|
| Nome | Nome exclusivo do script. Por exemplo, Clear /tmp filesystem |
|
| Escopo | Escopo do script: operação de ação, ação manual de host ou ação manual de evento. Essa configuração determina onde o script pode ser usado: em comandos remotos de operações de ação, no menu do host ou no menu do evento, respectivamente. Definir o escopo como 'Operação de ação' torna o script disponível para todos os usuários com acesso a Alertas > Ações. Se um script for realmente usado em uma ação, seu escopo não poderá ser alterado de 'operação de ação'. Suporte a macros O escopo afeta o conjunto de macros disponíveis. Por exemplo, macros relacionadas ao usuário ( {USER.*}) são compatíveis com scripts para permitir a transmissão de informações sobre o usuário que iniciou o script. No entanto, elas não são compatíveis quando o escopo do script é operação de ação, pois as operações de ação são executadas automaticamente.Uma macro {MANUALINPUT} permite especificar uma entrada manual no momento da execução do script. Ela é compatível com scripts de ação manual de host e de ação manual de evento. Para saber quais outras macros são compatíveis, pesquise por 'Notificações e comandos baseados em trigger/Comandos baseados em trigger', 'Scripts de ação manual de host' e 'Scripts de ação manual de evento' na tabela de macros compatíveis. Observe que, se uma macro puder ser resolvida para um valor com espaços (por exemplo, nome do host), não se esqueça de colocá-la entre aspas conforme necessário. |
|
| Caminho do menu | O caminho de menu desejado para o script. Por exemplo, Default ou Default/ exibirá o script no diretório correspondente. Os menus podem ser aninhados, por exemplo, Main menu/Sub menu1/Sub menu2. Ao acessar scripts pelo menu do host/evento nas seções de monitoramento, eles serão organizados de acordo com os diretórios fornecidos.Este campo é exibido somente quando 'Ação manual de host' ou 'Ação manual de evento' está selecionado como Escopo. |
|
| Tipo | Clique no botão correspondente para selecionar o tipo de script: comando URL, Webhook, Script, SSH, Telnet ou IPMI. O tipo URL está disponível somente quando 'Ação manual de host' ou 'Ação manual de evento' está selecionado como Escopo. |
|
| Tipo de script: URL | ||
| URL | Especifique a URL para acesso rápido pelo menu do host ou menu do evento. Macros e macros de usuário personalizadas são compatíveis. O suporte a macros depende do escopo do script (consulte Escopo acima). Use a macro {MANUALINPUT} neste campo para poder especificar uma entrada manual no momento da execução do script, por exemplo: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.viewOs valores das macros não devem ser codificados para URL. |
|
| Abrir em uma nova janela | Determina se a URL deve ser aberta em uma nova aba do navegador ou na mesma aba. | |
| Tipo de script: Webhook | ||
| Parâmetros | Especifique as variáveis do webhook como pares atributo-valor. Consulte também: configuração de mídia Webhook. Macros e macros de usuário personalizadas são compatíveis com valores de parâmetros. O suporte a macros depende do escopo do script (consulte Escopo acima). |
|
| Script | Insira o código JavaScript no editor modal que é aberto ao clicar no campo de parâmetro ou no ícone de lápis ao lado dele. O suporte a macros depende do escopo do script (consulte Escopo acima). Consulte também: configuração de mídia Webhook, Objetos JavaScript adicionais. |
|
| Tempo limite | Tempo limite de execução do JavaScript (1-60s, padrão de 30s). Sufixos de tempo são compatíveis (por exemplo, 30s, 1m). |
|
| Tipo de script: Script | ||
| Executar em | Clique no botão correspondente para executar o script de shell em: Zabbix agent - o script será executado pelo Zabbix agent (se o item system.run estiver permitido) no host Zabbix proxy ou server - o script será executado pelo Zabbix proxy ou server, dependendo de o host ser monitorado por proxy ou server. Ele será executado no proxy se estiver habilitado por EnableRemoteCommands. Ele será executado no server se os scripts globais estiverem habilitados pelo parâmetro do server EnableGlobalScripts. Zabbix server - o script será executado somente pelo Zabbix server. Esta opção não estará disponível se os scripts globais estiverem desabilitados pelo parâmetro do server EnableGlobalScripts. |
|
| Comandos | Insira o caminho completo dos comandos a serem executados no script. O suporte a macros depende do escopo do script (consulte Escopo acima). Macros de usuário personalizadas são compatíveis. |
|
| Tipo de script: SSH | ||
| Método de autenticação | Selecione o método de autenticação: senha ou chave pública. | |
| Nome de usuário | Insira o nome de usuário. | |
| Senha | Insira a senha. Este campo está disponível se 'Senha' estiver selecionado como método de autenticação. |
|
| Arquivo de chave pública | Insira o caminho para o arquivo de chave pública. Este campo está disponível se 'Chave pública' estiver selecionado como método de autenticação. |
|
| Arquivo de chave privada | Insira o caminho para o arquivo de chave privada. Este campo está disponível se 'Chave pública' estiver selecionado como método de autenticação. |
|
| Frase secreta | Insira a frase secreta. Este campo está disponível se 'Chave pública' estiver selecionado como método de autenticação. |
|
| Porta | Insira a porta do serviço SSH remoto no host de destino à qual o Zabbix se conectará. | |
| Comandos | Insira os comandos. O suporte a macros depende do escopo do script (consulte Escopo acima). Macros de usuário personalizadas são compatíveis. |
|
| Tipo de script: Telnet | ||
| Nome de usuário | Insira o nome de usuário. | |
| Senha | Insira a senha. | |
| Porta | Insira a porta do serviço Telnet remoto no host de destino à qual o Zabbix se conectará. | |
| Comandos | Insira os comandos. O suporte a macros depende do escopo do script (consulte Escopo acima). Macros de usuário personalizadas são compatíveis. |
|
| Tipo de script: IPMI | ||
| Comando | Insira o comando IPMI. O suporte a macros depende do escopo do script (consulte Escopo acima). Macros de usuário personalizadas são compatíveis. |
|
| Descrição | Insira uma descrição para o script. | |
| Grupo de hosts | Selecione o grupo de hosts para o qual o script estará disponível (ou Todos para todos os grupos de hosts). | |
| Grupo de usuários | Selecione o grupo de usuários para o qual o script estará disponível (ou Todos para todos os grupos de usuários). Este campo é exibido somente quando 'Ação manual de host' ou 'Ação manual de evento' está selecionado como Escopo. |
|
| Permissões de host necessárias | Selecione o nível de permissão para o grupo de hosts: Leitura ou Escrita. Somente usuários com o nível de permissão necessário terão acesso à execução do script. Este campo é exibido somente quando 'Ação manual de host' ou 'Ação manual de evento' está selecionado como Escopo. |
|
| Configuração avançada | Clique no cabeçalho Configuração avançada para exibir as opções de configuração avançada. Este campo é exibido somente quando 'Ação manual de host' ou 'Ação manual de evento' está selecionado como Escopo. |
|
Configuração avançada
As opções de configuração avançada estão disponíveis em uma seção recolhível Configuração avançada:

| Parameter | Description |
|---|---|
| Enable user input | Marque a caixa de seleção para habilitar a entrada manual do usuário antes de executar o script. A entrada manual do usuário substituirá o valor da macro {MANUALINPUT} no script. Veja também: Entrada manual do usuário. |
| Input prompt | Digite um texto personalizado para solicitar a entrada personalizada do usuário. Esse texto será exibido acima do campo de entrada no pop-up Entrada manual. Para ver uma prévia do pop-up Entrada manual, clique em Test user input. A prévia também permite testar se a string de entrada está em conformidade com a regra de validação de entrada (veja os parâmetros abaixo). O suporte a macro e user macro depende do escopo do script (veja Scope nos parâmetros gerais de configuração do script). |
| Input type | Selecione o tipo de entrada manual: String - string única; Dropdown - o valor é selecionado entre várias opções de lista suspensa. |
| Dropdown options | Digite valores exclusivos para a lista suspensa de entrada do usuário em uma lista separada por vírgulas. Para incluir uma opção em branco na lista suspensa, adicione uma vírgula extra no início, no meio ou no fim da lista. Este campo é exibido somente se 'Dropdown' estiver selecionado como Input type. |
| Default input string | Digite a string padrão para a entrada do usuário (ou nenhuma). Este campo será validado em relação à expressão regular fornecida no campo Input validation rule. O valor inserido aqui será exibido por padrão no pop-up Entrada manual. Este campo é exibido somente se 'String' estiver selecionado como Input type. |
| Input validation rule | Digite uma expressão regular para validar a string de entrada do usuário. Expressões regulares globais são suportadas. Este campo é exibido somente se 'String' estiver selecionado como Input type. |
| Enable confirmation | Marque a caixa de seleção para exibir uma mensagem de confirmação antes de executar o script. Esse recurso pode ser especialmente útil com operações potencialmente perigosas (como um script de reinicialização) ou que possam levar muito tempo. |
| Confirmation text | Digite um texto de confirmação personalizado para o pop-up de confirmação habilitado pela caixa de seleção acima (por exemplo, O sistema remoto será reiniciado. Tem certeza?). Para ver como o texto ficará, clique em Test confirmation ao lado do campo. Macros e user macros personalizados são suportados. Nota: as macros não serão expandidas ao testar a mensagem de confirmação. |
Se tanto a entrada manual do usuário quanto uma mensagem de confirmação estiverem configuradas, elas serão exibidas em janelas pop-up consecutivas.
Entrada manual do usuário
A entrada manual do usuário permite fornecer um parâmetro personalizado a cada execução do script. Isso elimina a necessidade de criar vários scripts de usuário semelhantes com apenas uma diferença de parâmetro.
Por exemplo, você pode querer fornecer um número inteiro diferente ou um endereço de URL diferente para o script durante a execução.
Para habilitar a entrada manual do usuário:
- use a macro {MANUALINPUT} no script (comandos, script, parâmetro do script) onde necessário; ou no campo URL de scripts de URL;
- na configuração avançada do script, habilite a entrada manual do usuário e configure as opções de entrada.
Com a entrada do usuário habilitada, antes da execução do script, um popup de Entrada manual aparecerá para o usuário solicitando o fornecimento de um valor personalizado. O valor fornecido substituirá {MANUALINPUT} no script.
Dependendo da configuração, o usuário será solicitado a inserir um valor de string:

Ou selecionar o valor em uma lista suspensa de opções predefinidas:

A entrada manual do usuário está disponível apenas para scripts cujo escopo seja 'Ação manual do host' ou 'Ação manual do evento'.
Execução de script e resultado
Os scripts executados pelo Zabbix server são executados na ordem descrita na página de execução de comandos.
O resultado do script é exibido em uma janela pop-up que aparece após a execução do script. O valor de retorno do script é uma saída padrão:
- Se o script for concluído com sucesso (código de saída
0), o valor de retorno é limitado a 16 MB (incluindo espaços em branco no final, que são truncados). - Se o script terminar com erro (código de saída diferente de zero), o valor de retorno é um erro padrão limitado a 2 KB.
Por padrão, o Zabbix não armazena a saída estendida do script. Para preservar todos os detalhes da saída, você pode implementar o registro de logs dentro do próprio script (por exemplo, redirecionando a saída para um arquivo de log local).
Observe que, para scripts executados no Zabbix server ou no Zabbix proxy, os limites do banco de dados também se aplicam.
Abaixo está um exemplo de um script e da janela de resultado:
uname -v
/tmp/non_existing_script.sh
echo "This script was started by {USER.USERNAME}"

O resultado do script não exibe o script em si.
Tempo limite de script no Zabbix agent
Você pode encontrar uma situação em que ocorre um timeout durante a execução de um script.
Veja um exemplo de um script em execução no Zabbix agent e a janela de resultado abaixo:
sleep 5
df -h

A mensagem de erro, neste caso, é a seguinte:
Timeout while executing a shell script.
Para evitar tais situações, é recomendável otimizar o próprio script (no exemplo acima, "5") em vez de ajustar o parâmetro Timeout em Zabbix agent configuration e Zabbix server configuration.
Caso o parâmetro Timeout tenha sido alterado em Zabbix agent configuration, a seguinte mensagem de erro será exibida:
Get value from agent failed: ZBX_TCP_READ() timed out.
Isso significa que a modificação foi feita em Zabbix agent configuration, mas também é necessário modificar o parâmetro Timeout em Zabbix server configuration.
Tempo limite de script em agents ativos
É possível executar scripts em agents que operam apenas no modo ativo (desde o Zabbix 7.0). Depois que a execução do script é acionada pela operation da ação ou pela execução manual do script, o comando é incluído na configuração de verificação ativa e executado assim que o active agent o recebe.
Scripts manuais são enviados ao active agent junto com o timeout do server/proxy para a execução do script. Aumente o timeout padrão do server/proxy para a execução do script. O timeout deve ser maior que a frequência de atualização da verificação ativa; caso contrário, o timeout será excedido antes que o active agent receba o script e consiga retornar o resultado.
Tempo limite do script no Zabbix server/proxy
Veja abaixo um exemplo de um script em execução no Zabbix server e a janela de resultado:
sleep 11
df -h

Também é recomendável otimizar o próprio script (em vez de ajustar o parâmetro TrapperTimeout para um valor correspondente (no nosso caso, > 11) modificando a configuração do Zabbix server).