Назад | Перейти на главную страницу

Плагин 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 "

Вы заблуждались, не сравнивая яблоки с яблоками. Команда, которую вы запускаете вручную: не команда, которую вы просите NAGIOS запускать автоматически. Когда вы запускаете фактическую команду вручную

check_nrpe_hwinfo.sh $HOSTNAME$ $HOSTADDRESS$

при соответствующих заменах проблема выявляется. Похоже, что файл был передан из окна Windows и имеет окончания строк в стиле dos, что приводит к тому, что интерпретатор shebang становится раздражительным, когда вы просите его запустить интерпретатор с именем bash^M. Прогнать через dos2unix, или возьмите терминал ^Mс vi или другой двоичный редактор, и все должно быть хорошо.

Отличный инструмент для отладки 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"