3 Scripts
Visão geral
Na seção Alerts > Scripts, scripts globais definidos pelo usuário podem ser configurados e mantidos.
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 action
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 desativados 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 desativada 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 está desativada 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 action, ação manual de host ou ação manual de evento. Essa configuração determina onde o script está disponível. |
| Used in actions | Todas as actions em que o script é usado são exibidas, precedidas pelo número total dessas actions. Clicar no nome da action abre o formulário de configuração da action. Se o usuário não tiver permissões para a action, 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 - excluir 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 resolvidos.
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:
| Parameter | Description | |
|---|---|---|
| Name | Nome exclusivo do script. Ex.: Clear /tmp filesystem |
|
| Scope | Escopo do script - operação de ação, ação manual de host ou ação manual de evento. Esta 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 'Action operation' torna o script disponível para todos os usuários com acesso a Alerts > Actions. Se um script estiver sendo usado de fato em uma ação, seu escopo não pode ser alterado para fora de 'action operation'. Suporte a macros O escopo afeta o conjunto de macros disponíveis. Por exemplo, macros relacionadas ao usuário ({USER.*}) são suportadas em scripts para permitir a passagem de informações sobre o usuário que iniciou o script. No entanto, elas não são suportadas se o escopo do script for action operation, pois as operações de ação são executadas automaticamente. Uma macro {MANUALINPUT} permite especificar entrada manual no momento da execução do script. Ela é suportada para scripts de ação manual de host e de ação manual de evento. Para descobrir quais outras macros são suportadas, faça uma busca por 'Trigger-based notifications and commands/Trigger-based commands', 'Manual host action scripts' e 'Manual event action scripts' na tabela de macros suportadas. 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. |
|
| Menu path | 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 informados.Este campo é exibido somente se 'Manual host action' ou 'Manual event action' estiver selecionado como Scope. |
|
| Type | Clique no botão correspondente para selecionar o tipo de script: URL, Webhook, Script, SSH, Telnet ou comando IPMI. O tipo URL está disponível somente quando 'Manual host action' ou 'Manual event action' estiver selecionado como Scope. |
|
| Script type: URL | ||
| URL | Especifique a URL para acesso rápido pelo menu do host ou menu do evento. Macros e user macros personalizados são suportados. O suporte a macros depende do escopo do script (veja Scope acima). Use a macro {MANUALINPUT} neste campo para poder especificar 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 em URL. |
|
| Open in new window | Determina se a URL deve ser aberta em uma nova aba do navegador ou na mesma aba. | |
| Script type: Webhook | ||
| Parameters | Especifique as variáveis do webhook como pares atributo-valor. Veja também a configuração de mídia Webhook. Macros e user macros personalizados são suportados nos valores dos parâmetros. O suporte a macros depende do escopo do script (veja Scope acima). |
|
| Script | Insira o código JavaScript no editor modal que é aberto ao clicar no campo do parâmetro ou no ícone de lápis ao lado dele. O suporte a macros depende do escopo do script (veja Scope acima). Veja também a configuração de mídia Webhook, Objetos JavaScript adicionais. |
|
| Timeout | Tempo limite de execução do JavaScript (1-60s, padrão 30s). Sufixos de tempo são suportados, por exemplo, 30s, 1m. |
|
| Script type: Script | ||
| Execute on | 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 or 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 scripts globais estiverem habilitados pelo parâmetro de server EnableGlobalScripts. Zabbix server - o script será executado somente pelo Zabbix server. Esta opção não estará disponível se scripts globais estiverem desabilitados pelo parâmetro de server EnableGlobalScripts. |
|
| Commands | Informe o caminho completo dos comandos a serem executados dentro do script. O suporte a macros depende do escopo do script (veja Scope acima). user macros personalizados são suportados. |
|
| Script type: SSH | ||
| Authentication method | Selecione o método de autenticação - senha ou chave pública. | |
| Username | Informe o nome de usuário. | |
| Password | Informe a senha. Este campo está disponível se 'Password' estiver selecionado como método de autenticação. |
|
| Public key file | Informe o caminho para o arquivo de chave pública. Este campo está disponível se 'Public key' estiver selecionado como método de autenticação. |
|
| Private key file | Informe o caminho para o arquivo de chave privada. Este campo está disponível se 'Public key' estiver selecionado como método de autenticação. |
|
| Passphrase | Informe a frase-senha. Este campo está disponível se 'Public key' estiver selecionado como método de autenticação. |
|
| Port | Informe a porta do serviço SSH remoto no host de destino ao qual o Zabbix irá se conectar. | |
| Commands | Informe os comandos. O suporte a macros depende do escopo do script (veja Scope acima). user macros personalizados são suportados. |
|
| Script type: Telnet | ||
| Username | Informe o nome de usuário. | |
| Password | Informe a senha. | |
| Port | Informe a porta do serviço Telnet remoto no host de destino ao qual o Zabbix irá se conectar. | |
| Commands | Informe os comandos. O suporte a macros depende do escopo do script (veja Scope acima). user macros personalizados são suportados. |
|
| Script type: IPMI | ||
| Command | Informe o comando IPMI. O suporte a macros depende do escopo do script (veja Scope acima). user macros personalizados são suportados. |
|
| Description | Informe uma descrição para o script. | |
| Host group | Selecione o grupo de hosts para o qual o script estará disponível (ou All para todos os grupos de hosts). | |
| User group | Selecione o grupo de usuários para o qual o script estará disponível (ou All para todos os grupos de usuários). Este campo é exibido somente se 'Manual host action' ou 'Manual event action' estiver selecionado como Scope. |
|
| Required host permissions | Selecione o nível de permissão para o grupo de hosts - Read ou Write. Somente usuários com o nível de permissão exigido terão acesso à execução do script. Este campo é exibido somente se 'Manual host action' ou 'Manual event action' estiver selecionado como Scope. |
|
| Advanced configuration | Clique no cabeçalho Advanced configuration para exibir as opções de configuração avançada. Este campo é exibido somente se 'Manual host action' ou 'Manual event action' estiver selecionado como Scope. |
|
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 manual 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 Testar entrada do usuário. 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 vazia na lista suspensa, adicione uma vírgula extra no início, no meio ou no final 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 em 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 com a caixa de seleção acima (por exemplo, O sistema remoto será reiniciado. Tem certeza?). Para ver como o texto ficará, clique em Testar confirmação 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 a entrada manual do usuário e 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 em 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 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 de host' ou 'Ação manual de evento'.
Execução do 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 finalizado com sucesso (código de saída
0), o valor de retorno é limitado a 16MB (incluindo espaços em branco à direita, que são truncados). - Se o script for finalizado com erro (código de saída diferente de zero), o valor de retorno é um erro padrão limitado a 2KB.
O Zabbix não armazena a saída estendida do script por padrão. Para preservar todos os detalhes da saída, você pode implementar o registro de log 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 script e a janela de resultado:
uname -v
/tmp/non_existing_script.sh
echo "Este script foi iniciado por {USER.USERNAME}"

O resultado do script não exibe o próprio script.
Tempo limite do script no agent Zabbix
Você pode se deparar com uma situação em que ocorre um tempo limite ao executar um script.
Veja um exemplo de script executado no agent Zabbix 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, recomenda-se otimizar o próprio script (no exemplo acima, "5") em vez de ajustar o parâmetro Timeout na configuração do agent Zabbix e na configuração do server Zabbix.
Caso o parâmetro Timeout tenha sido alterado na configuração do agent Zabbix, a seguinte mensagem de erro aparecerá:
Get value from agent failed: ZBX_TCP_READ() timed out.
Isso significa que a modificação foi feita na configuração do agent Zabbix, mas é necessário modificar o parâmetro Timeout também na configuração do server Zabbix.
Tempo limite de script em agents ativos
É possível executar scripts em agents operando apenas no modo ativo. Uma vez que a execução do script é acionada por uma operação de ação ou execução manual do script, o comando é incluído na configuração de verificação ativa e executado assim que o agent ativo o recebe.
Scripts manuais são enviados para o agent ativo juntamente com o tempo limite do server/proxy para execução do script. Por favor, aumente o tempo limite padrão do server/proxy para execução do script. O tempo limite deve ser maior do que a frequência de atualização da verificação ativa, caso contrário, o tempo limite será excedido antes que o agent ativo receba o script e seja capaz de retornar o resultado.
Tempo limite do script no Zabbix server/proxy
Veja um exemplo de um script rodando no Zabbix server e a janela de resultado abaixo:
sleep 11
df -h

Também é aconselhá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).