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

сценарий / команда nagios bash, возвращающая значение null

Я написал простую команду nagios, чтобы проверить изменение значения за 1 секунду

#!/bin/bash
HOSTNAME=$1
COMMUNITY=$2
OID=$3
WAITTIME=1
echo "/usr/lib/nagios/plugins/check_snmp -H $HOSTNAME -C $COMMUNITY -o $OID" > /tmp/csnmp_comand
VAR1=`/usr/lib/nagios/plugins/check_snmp -H $HOSTNAME -C $COMMUNITY -o $OID|cut -d"=" -f2|sed 's/[a-Z]//'`
/bin/sleep $WAITTIME
VAR2=`/usr/lib/nagios/plugins/check_snmp -H $HOSTNAME -C $COMMUNITY -o $OID|cut -d"=" -f2|sed 's/[a-Z]//'`
CHANGED=`/usr/bin/expr $VAR2 - $VAR1`
BPS=`/usr/bin/expr $CHANGED / $WAITTIME`
echo "OK $BPS|bps=$BPS" > /tmp/check_snmptest
echo "OK $BPS|bps=$BPS"
exit 0

И я написал сервис, называющий этот скрипт

define command{
    command_name    snmp_cps
    command_line     /usr/lib/nagios/plugins/check_cps '$HOSTADDRESS$' '$_HOSTSNMPCOMMUNITY$' '$ARG1'
}

Когда я вызываю сценарий вручную (даже в качестве пользователя nagios), я получаю

OK 233|bps=233 

Или что-то в этом роде, но когда я планирую эту команду, она возвращает ноль и устанавливает критическое значение

Также мой host.cfg

define host{
    use     generic-host
    host_name   asa5505.customer.local
    alias       Options ASA 5505
    address     asa5505.customer.local
    _SNMPCOMMUNITY  SetSecurly
}
define service {
        use                             generic-service
        host_name                       asa5505.customer.local
        service_description             Outside Interface PBS
        check_command                   snmp_cps!1.3.6.1.2.1.2.2.1.10.16
}

С небольшими изменениями (имя хоста и snmpcommunity)

Вы потеряли последний доллар $ARG1$, поэтому OID полностью игнорируется (Nagios передаст $ ARG1 оболочке, которая разыменует его на "").

Вы должны добавить некоторую проверку работоспособности к $ 1, $ 2 и $ 3 в скрипте, чтобы предотвратить это в будущем.