web-dev-qa-db-ja.com

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ホストでは、提供された「check_hwinfo.wsf」ファイルが「C:\ NSClient ++\scripts」にあります。ダブルクリックすると、スクリプトが正しく実行され、ポップアップウィンドウに情報が表示されます。また、「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
dlyk1988

あなたはリンゴとリンゴを比較しないことで自分を誤解させました。手動で実行しているコマンドはnot NAGIOSに自動的に実行するように要求しているコマンドです。実際のコマンドを手動で実行する場合

check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$

適切な置換を行うことで、問題が明らかになります。ファイルはWindowsボックスから転送されたようで、dosスタイルの行末があります。これにより、bash^Mというインタープリターを起動するように要求すると、Shebangインタープリターが厄介になります。 dos2unixで実行するか、ターミナル^Msをviまたは別のバイナリ対応エディタで取り出しれば、すべてうまくいくはずです。

4
MadHatter

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"
0
eject