Na seção Alertas → Scripts, scripts globais definidos pelo usuário podem ser configurados e mantidos.
Scripts globais, dependendo do escopo configurado e também das permissões do usuário, estão disponíveis para execução:
Os scripts são executados no agent Zabbix, server Zabbix (proxy) ou apenas no server Zabbix. Veja também Execução de comandos.
Tanto no agent Zabbix quanto no proxy Zabbix, scripts remotos estão desabilitados por padrão. Eles podem ser habilitados por:
A execução de scripts globais no server Zabbix 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 server Zabbix está desabilitada por padrão.
Uma lista dos scripts existentes com seus detalhes é exibida.

Dados exibidos:
| Coluna | Descrição |
|---|---|
| Nome | Nome do script. Clicar no nome do script abre o formulário de configuração do script. |
| Escopo | 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 está disponível. |
| Usado em ações | Todas as ações onde o script é usado são exibidas, 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. |
| Tipo | O tipo de script é exibido - comando URL, Webhook, Script, SSH, Telnet ou IPMI. |
| Executar em | É exibido se o script será executado no agent Zabbix, proxy Zabbix ou server, ou apenas no server Zabbix. |
| Comandos | Todos os comandos a serem executados dentro do script são exibidos. Nada é exibido aqui para webhooks. |
| Grupo de usuários | O grupo de usuários para o qual o script está disponível é exibido (ou Todos para todos os grupos de usuários). |
| Grupo de hosts | O grupo de hosts para o qual o script está disponível é exibido (ou Todos para todos os grupos de hosts). |
| Acesso ao host | O nível de permissão para o grupo de hosts é exibido - Leitura ou Escrita. Apenas usuários com o nível de permissão necessário terão acesso à execução do script. |
Para configurar um novo script, clique no botão Criar script no canto superior direito.
Um botão abaixo da lista oferece uma opção de edição em massa:
Para usar esta opção, marque as caixas de seleção antes dos respectivos scripts e clique em Excluir.
Você pode usar o filtro para exibir apenas os scripts que lhe interessam. Para melhor desempenho de pesquisa, os dados são pesquisados com macros não resolvidas.
O link Filtro está disponível acima da lista de scripts. Se você clicar nele, um filtro ficará disponível onde você pode filtrar scripts por nome e escopo.


Atributos do script:
| Parâmetro | Descrição | |
|---|---|---|
| Nome | Nome único do script. Ex.: Limpar sistema de arquivos /tmp |
|
| Escopo | 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, a partir do menu de host ou do menu de 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 macro O escopo afeta a gama de macros disponíveis. Por exemplo, macros relacionadas ao usuário ({USER.*}) são suportadas em scripts para permitir o envio de informações sobre o usuário que lançou o script. No entanto, elas não são suportadas se o escopo do script for operação de ação, pois as operações de ação são executadas automaticamente. A macro {MANUALINPUT} permite especificar uma entrada manual no momento da execução do script. Ela é suportada para scripts de ação manual de host e ação manual de evento. Para descobrir quais outras macros são suportadas, faça uma busca 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 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 colocar aspas conforme necessário. |
|
| Caminho do menu | O caminho de menu desejado para o script. Por exemplo, Padrão ou Padrão/, exibirá o script no respectivo diretório. Os menus podem ser aninhados, por exemplo, Menu principal/Submenu1/Submenu2. Ao acessar scripts pelo menu de host/evento nas seções de monitoramento, eles serão organizados de acordo com os diretórios fornecidos.Este campo é exibido apenas se 'Ação manual de host' ou 'Ação manual de evento' for selecionado como Escopo. |
|
| Tipo | Clique no respectivo botão para selecionar o tipo de script: URL, Webhook, Script, SSH, Telnet ou comando IPMI. O tipo URL está disponível apenas quando 'Ação manual de host' ou 'Ação manual de evento' é selecionado como Escopo. |
|
| Tipo de script: URL | ||
| URL | Especifique a URL para acesso rápido a partir do menu de host ou menu de evento. Macros e macros de usuário personalizadas são suportadas. O suporte a macros depende do escopo do script (veja 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 em URL. |
|
| Abrir em nova janela | Determina se a URL deve ser aberta em uma nova guia do navegador ou na mesma. | |
| Tipo de script: Webhook | ||
| Parâmetros | Especifique as variáveis do webhook como pares atributo-valor. Veja também: configuração de mídia Webhook. Macros e macros de usuário personalizadas são suportadas nos valores dos parâmetros. O suporte a macros depende do escopo do script (veja Escopo acima). |
|
| Script | Digite 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 (veja Escopo acima). Veja também: configuração de mídia Webhook, Objetos Javascript adicionais. |
|
| Timeout | Timeout de execução do JavaScript (1-60s, padrão 30s). Sufixos de tempo são suportados, por exemplo, 30s, 1m. |
|
| Tipo de script: Script | ||
| Executar em | Clique no respectivo botão para executar o script 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 se o host é monitorado por proxy ou server. Ele será executado no proxy se habilitado por EnableRemoteCommands. Ele será executado no server se scripts globais estiverem habilitados pelo parâmetro EnableGlobalScripts do server. Zabbix server - o script será executado apenas pelo Zabbix server. Esta opção não estará disponível se scripts globais estiverem desabilitados pelo parâmetro EnableGlobalScripts do server. |
|
| Comandos | Digite o caminho completo para os comandos a serem executados dentro do script. O suporte a macros depende do escopo do script (veja Escopo acima). Macros de usuário personalizadas são suportadas. |
|
| 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 | Digite o nome de usuário. | |
| Senha | Digite a senha. Este campo está disponível se 'Senha' for selecionado como método de autenticação. |
|
| Arquivo de chave pública | Digite o caminho para o arquivo de chave pública. Este campo está disponível se 'Chave pública' for selecionado como método de autenticação. |
|
| Arquivo de chave privada | Digite o caminho para o arquivo de chave privada. Este campo está disponível se 'Chave pública' for selecionado como método de autenticação. |
|
| Frase secreta | Digite a frase secreta. Este campo está disponível se 'Chave pública' for selecionado como método de autenticação. |
|
| Porta | Digite a porta. | |
| Comandos | Digite os comandos. O suporte a macros depende do escopo do script (veja Escopo acima). Macros de usuário personalizadas são suportadas. |
|
| Tipo de script: Telnet | ||
| Nome de usuário | Digite o nome de usuário. | |
| Senha | Digite a senha. | |
| Porta | Digite a porta. | |
| Comandos | Digite os comandos. O suporte a macros depende do escopo do script (veja Escopo acima). Macros de usuário personalizadas são suportadas. |
|
| Tipo de script: IPMI | ||
| Comando | Digite o comando IPMI. O suporte a macros depende do escopo do script (veja Escopo acima). Macros de usuário personalizadas são suportadas. |
|
| Descrição | Digite 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 apenas se 'Ação manual de host' ou 'Ação manual de evento' for selecionado como Escopo. |
|
| Permissões de host necessárias | Selecione o nível de permissão para o grupo de hosts - Leitura ou Escrita. Apenas usuários com o nível de permissão necessário terão acesso à execução do script. Este campo é exibido apenas se 'Ação manual de host' ou 'Ação manual de evento' for selecionado como Escopo. |
|
| Configuração avançada | Clique no rótulo Configuração avançada para exibir as opções de configuração avançada. Este campo é exibido apenas se 'Ação manual de host' ou 'Ação manual de evento' for selecionado como Escopo. |
|
Opções de configuração avançada estão disponíveis em uma seção recolhível Configuração avançada:

| Parâmetro | Descrição |
|---|---|
| Habilitar entrada do usuário | 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. |
| Mensagem de entrada | Insira um texto personalizado solicitando a entrada personalizada do usuário. Este texto será exibido acima do campo de entrada no popup Entrada manual. Para ver uma prévia do popup 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 macro de usuário depende do escopo do script (veja Escopo nos parâmetros gerais de configuração do script). |
| Tipo de entrada | Selecione o tipo de entrada manual: String - string única; Dropdown - o valor é selecionado entre várias opções de dropdown. |
| Opções do dropdown | Insira valores únicos para o dropdown de entrada do usuário em uma lista separada por vírgulas. Para incluir uma opção vazia no dropdown, adicione uma vírgula extra no início, meio ou final da lista. Este campo é exibido apenas se 'Dropdown' for selecionado como Tipo de entrada. |
| String de entrada padrão | Insira 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 Regra de validação de entrada. O valor inserido aqui será exibido por padrão no popup Entrada manual. Este campo é exibido apenas se 'String' for selecionado como Tipo de entrada. |
| Regra de validação de entrada | Insira uma expressão regular para validar a string de entrada do usuário. Expressões regulares globais são suportadas. Este campo é exibido apenas se 'String' for selecionado como Tipo de entrada. |
| Habilitar confirmação | Marque a caixa de seleção para exibir uma mensagem de confirmação antes de executar o script. Este recurso pode ser especialmente útil com operações potencialmente perigosas (como um script de reinicialização) ou que possam levar muito tempo. |
| Texto de confirmação | Insira um texto de confirmação personalizado para o popup 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 macros de usuário personalizadas são suportadas. 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 forem configuradas, elas serão exibidas em janelas popup consecutivas.
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:
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'.
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:
0), o valor de retorno é limitado a 16MB (incluindo espaços em branco à direita, que são truncados).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 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 Zabbix proxy, os limites do banco de dados também se aplicam.
Abaixo está um exemplo de script e a janela de resultado:

O resultado do script não exibe o próprio script.
Você pode se deparar com uma situação em que ocorre um timeout ao executar um script.
Veja abaixo um exemplo de script rodando no Zabbix agent e a janela de resultado:

A mensagem de erro, neste caso, é a seguinte:
Para evitar tais situações, é aconselhável otimizar o próprio script (no exemplo acima, "5") em vez de ajustar o parâmetro Timeout na configuração do Zabbix agent e na configuração do Zabbix server. No entanto, para o Zabbix agent em modo ativo, o parâmetro Timeout na configuração do Zabbix server deve ser pelo menos alguns segundos maior que o parâmetro RefreshActiveChecks na configuração do Zabbix agent. Isso garante que o server tenha tempo suficiente para receber os resultados das checagens ativas do agent. Observe que a execução de scripts em agent ativo é suportada a partir do Zabbix agent 7.0.
Caso o parâmetro Timeout tenha sido alterado na configuração do Zabbix agent, a seguinte mensagem de erro aparecerá:
Isso significa que a modificação foi feita na configuração do Zabbix agent, mas é necessário modificar também o parâmetro Timeout na configuração do Zabbix server.
Veja um exemplo de script rodando no Zabbix server e a janela de resultado abaixo:

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).