Depois de algumas tentativas e erros, consegui que o plug-in check_hwinfo funcionasse apenas parcialmente. E por parcialmente quero dizer manualmente.
No meu diretório '/usr/lib64/nagios/plugins' eu tenho o script 'check_nrpe_hwinfo.sh' com as permissões corretas:
[root@localhost plugins]# ls -lah | grep hwinfo
-rwxr-xr-x. 1 root root 419 Dec 8 15:35 check_nrpe_hwinfo.sh
No meu diretório 'conf.d' eu tenho um arquivo 'check-hwinfo.cfg' com as declarações necessárias:
define command{
command_name check_hwinfo
command_line $USER1$/check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$
}
define service{
use generic-service
hostgroup_name 1st-floor-windows-nrpe-hosts,2nd-floor-windows-nrpe-hosts
service_description HW Info
notification_options none
normal_check_interval 240
notification_interval 240
retry_check_interval 2
max_check_attempts 120
check_command check_hwinfo
}
Em meus hosts do Windows, tenho o arquivo 'check_hwinfo.wsf' fornecido em 'C:\NSClient++\scripts'. Ao clicar duas vezes, o script é executado corretamente e exibe as informações em uma janela pop-up. Além disso, modifiquei o arquivo 'nsclient-full.ini' assim:
[/settings/external scripts/scripts]
check_hwinfo=c:\windows\system32\cscript.exe //NoLogo //T:30 scripts\check_hwinfo.wsf
check_hwinfo_csv=c:\windows\system32\cscript.exe //NoLogo //T:30 scripts\check_hwinfo.wsf /sep:csv
Quando no meu servidor Nagios, no diretório '/usr/lib64/nagios/plugins/' dou este comando:
./check_nrpe -H 192.168.10.13 -c check_hwinfo
Eu recebo a saída correta.
A verificação deve ser executada automaticamente. Mas... No Nagios WebUI recebo este erro na linha correspondente a check_hwinfo:
(Return code of 126 is out of bounds - plugin may not be executable)
Depois de algumas experiências com o Nagios, acho que é apenas um erro genérico.
Então ... Alguma ideia de por que a verificação é executada e retorna corretamente quando executada manualmente, mas não quando executada automaticamente?
ATUALIZAÇÃO 1:
O arquivo 'check_nrpe_hwinfo.sh' é exatamente assim:
#!/bin/bash
ARG_HOSTNAME=${NAGIOS_HOSTNAME:-$1}
ARG_HOSTADDRESS=${NAGIOS_HOSTADDRESS:-$2}
PATH=${PATH}:/usr/lib64/nagios/plugins
HWINFO="`check_nrpe -H $ARG_HOSTNAME -c check_hwinfo_csv`"
RESULT=$?
ARG_HOSTNAME_CLEAN=`echo $ARG_HOSTNAME | tr -cd '0-9a-zA-Z._-'`
if [ "$RESULT" == 0 ]; then
echo "\"$ARG_HOSTADDRESS\",$HWINFO" > /var/www/html/hwinfo/$ARG_HOSTNAME_CLEAN
fi
echo "$HWINFO"
exit $RESULT
ATUALIZAÇÃO 2:
[root@localhost plugins]# ./check_nrpe -H 192.168.10.13 -c check_hwinfo_csv
"Gigabyte Technology Co., Ltd.","P55A-UD3","","1","Intel(R) Core(TM) i7 CPU 870 @ 2.93GHz","2927 MHz","8192 KB","133 MHz","8192M","Non-ECC","4096M/2048M/2048M/0","932 G / 932 G","WDC WD10EALS-002BA0 ATA Device / WDC WD10EZRX-00A8LB0 ATA Device","Microsoft Windows 7 Ultimate "
Você se enganou ao não comparar maçãs com maçãs. O comando que você está executando manualmente não é o comando que você está pedindo ao NAGIOS para executar automaticamente. Quando você executa o comando real manualmente
com substituições apropriadas, o problema vem à tona. Parece que o arquivo foi transferido de uma caixa do Windows e tem terminações de linha no estilo dos - o que faz com que o interpretador shebang fique irritado quando você pede para iniciar um interpretador chamado
bash^M
. Execute-o atravésdos2unix
de , ou retire os terminais^M
comvi
ou outro editor com capacidade binária, e tudo deve estar bem.Para depurar verificações do nagios, uma ferramenta incrível é o PyNag https://github.com/pynag/pynag/wiki
Dependendo da sua distribuição, você pode obtê-lo em pacotes ou no github