Я написал простую команду 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 в скрипте, чтобы предотвратить это в будущем.