Nagios插件手动执行,但不会自动执行

经过一些试验和错误,我设法让check_hwinfo插件只部分工作。 而部分我的意思是手动。

在我的'/ usr / lib64 / nagios / plugins'目录中,我有'check_nrpe_hwinfo.sh'脚本具有正确的权限:

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

在我的conf.d目录中,我有一个带有必要声明的“check-hwinfo.cfg”文件:

 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 } 

在我的Windows主机上,我在'C:\ NSClient ++ \ scripts'中提供了'check_hwinfo.wsf'文件。 双击时,脚本正确运行并在popup窗口中显示信息。 另外,我修改了“nsclient-full.ini”文件,如下所示:

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

在我的Nagios服务器上,在'/ usr / lib64 / nagios / plugins /'目录中,我给出这个命令:

 ./check_nrpe -H 192.168.10.13 -c check_hwinfo 

我得到正确的输出。

检查应该自动运行。 但是…在Nagios的WebUI我得到这个错误在check_hwinfo对应的行:

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

经过Nagios的一些实验后,我认为这只是一个通用的错误。

所以…任何想法为什么检查执行和手动运行时正确返回,而不是自动运行时?

更新1:

'check_nrpe_hwinfo.sh'文件看起来像这样:

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

更新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 " 

你没有比较苹果和苹果,误导了你自己。 您手动运行的命令不是您要求NAGIOS自动运行的命令。 当你手动运行实际的命令

 check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$ 

如果有适当的replace,问题就会显露出来。 看起来这个文件是从一个Windows机器上转移来的,并且有dos风格的行结尾 – 这会导致shebang解释器在你要求它启动一个名为bash^M的解释器时变得僵硬。 通过dos2unix运行,或者用vi或者其他支持二进制的编辑器将terminal^M s出来,一切都会好的。

对于debuggingNagios检查真棒工具是PyNag https://github.com/pynag/pynag/wiki

取决于你的发行版,你可以从软件包或github中获取

 # cd to folder with nagios.cfg cd /etc/nagios/ # run pynag to see what's actual command will be executed # Usage: pynag execute <host_name> [service_description] pynag execute my_windows_host1 "HW Info"