Nagios plugin executes manually but not automatically

nagiosnrpe

After some trial and error I managed to get the check_hwinfo plugin only partially working. And by partially I mean manually.

In my '/usr/lib64/nagios/plugins' directory I have the 'check_nrpe_hwinfo.sh' script with the correct permissions:

[root@localhost plugins]# ls -lah | grep hwinfo
-rwxr-xr-x. 1 root root    419 Dec  8 15:35 check_nrpe_hwinfo.sh

In my 'conf.d' directory I have a 'check-hwinfo.cfg' file with the necessary declarations:

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
}

On my windows hosts I have the supplied 'check_hwinfo.wsf' file in 'C:\NSClient++\scripts'. When doing double click, the script runs correctly and displays the info in a popup window. Also, I have modified the 'nsclient-full.ini' file like this:

[/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

When on my Nagios server, in the '/usr/lib64/nagios/plugins/' directory I give this command:

./check_nrpe -H 192.168.10.13 -c check_hwinfo

I get the correct output.

The check is supposed to run automatically. But…
In the Nagios WebUI i get this error in the line corresponding to check_hwinfo:

(Return code of 126 is out of bounds - plugin may not be executable) 

After some experimentation with Nagios I think this is just a generic error.

So… Any ideas why the check executes and returns properly when run manually but not when run automatically?

UPDATE 1:

The 'check_nrpe_hwinfo.sh' file looks exactly like this:

#!/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

UPDATE 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 "

Best Answer

You have misled yourself by not comparing apples with apples. The command you are running manually is not the command that you're asking NAGIOS to run automatically. When you run the actual command manually

check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$

with appropriate substitutions, the problem comes to light. It appears to be that the file was transferred from a Windows box, and has dos-style line endings - which causes the shebang interpreter to get tetchy as you're asking it to launch an interpreter called bash^M. Run it through dos2unix, or take the terminal ^Ms out with vi or another binary-capable editor, and all should be well.

Related Topic