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

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

经过反复尝试,我终于得到了检查硬件信息插件只能部分工作。我说的部分意思是手动。

在我的“/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 "

答案1

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

check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$

经过适当的替换,问题就暴露出来了。文件似乎是从 Windows 机器传输过来的,并且有 dos 风格的行尾 - 这导致 shebang 解释器在你要求它启动一个名为 的解释器时变得不稳定bash^M。通过 运行它,或者用或其他支持二进制的编辑器dos2unix将终端^Ms 取出,一切都应该没问题。vi

答案2

对于调试 nagios 检查来说,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"

相关内容