A execução de um script do manipulador de eventos do Nagios falha ao executar

2

Eu tenho o Nagios rodando em um servidor web. Para esta verificação de serviço do Nagios em particular, se falhar, irá executar um script. Este script é acionado via manipuladores de eventos do Nagios.

Comando do manipulador de eventos Nagios:

define command{
        command_name    testDisableServer
        command_line    /usr/local/nagios/etc/objects/event_handlers/testDisableServer.sh
}

Estou executando um script chamado testDisableServer.sh de manipuladores de eventos do Nagios que se parece com isto:

#!/bin/bash
wall "Script execution started";
/usr/bin/sudo /root/scripts/disableServer.sh force

Este script 'testDisableServer.sh' tem as seguintes permissões:

-rwxr-xr-x 1 nagios nagios 2.0K Oct 12 14:57 testDisableServer.sh

Quando o serviço cair, receberei uma mensagem no meu SSH dizendo "Script execution started", mas isso não acionará o script disableServer.sh. Eu tentei colocar outro post no mural dentro de disableServer.sh e ele não o acionou.

Este script está sendo executado pelo usuário 'nagios'. 'nagios' foi adicionado em visudo, como tal:

nagios  ALL=(ALL)NOPASSWD:/root/scripts/disableServer.sh

A execução deste script como o usuário 'nagios' de uma linha de comando funciona perfeitamente. No entanto, quando o manipulador de eventos dispara, não há saída. Tentei capturar a saída em um arquivo de log e não consegui nada. Estas são as permissões em /root/scripts/disableServer.sh:

-rwxr-xr-x   1 root root 2.0K Oct 12 15:01 disableServer.sh

Por que o manipulador de eventos atingiu 'testDisableServer.sh', mas não executou 'disableServer.sh' em um manipulador de eventos do Nagios, mas funciona muito bem em uma conexão SSH como o nagios do usuário? BTW, 'testDisableServer.sh' é apenas uma camada extra adicionada para ver se os manipuladores de eventos estavam funcionando, o que eles parecem ser. Isso será removido depois que a execução desse script for resolvida.

    
por Ryan 12.10.2012 / 19:38

2 respostas

1

Possivelmente, é um problema de ambiente (o script está contando com algo em seu ambiente que não está disponível quando executado por nagios).

Eu mudaria seu script (temporariamente apenas para depuração) para:

#!/bin/bash
exec 2> /tmp/log."$$"
set -x
wall "Script execution started";
/usr/bin/sudo /root/scripts/disableServer.sh force

E adicione outro set -x no topo de disableServer.sh

Para ver o que está acontecendo (nos arquivos /tmp/log.* ).

    
por 12.10.2012 / 21:36
1

No meu caso, o problema foi:

sudo: sorry, you must have a tty to run sudo

Então você pode simplesmente desativá-lo em / etc / sudoers comentando

Defaults    requiretty

Que não tem nenhum benefício de qualquer maneira.

    
por 10.03.2016 / 07:09