经过反复试验,我设法让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”文件。双击时,脚本正确运行并在弹出窗口中显示信息。另外,我已经像这样修改了“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 自动运行的命令。当您手动运行实际命令时
通过适当的替换,问题就暴露出来了。该文件似乎是从 Windows 框传输的,并且具有 dos 样式的行结尾 - 这会导致 shebang 解释器在您要求它启动一个名为
bash^M
. 通过 运行它dos2unix
,或者使用或其他具有二进制功能的编辑器将终端^M
s 取出vi
,一切都应该很好。用于调试 nagios 检查很棒的工具是 PyNag https://github.com/pynag/pynag/wiki
取决于您的发行版,您可以从软件包或 github 获取它