nagios bash 脚本/命令返回 null

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 

或者类似的东西,但是当我安排这个命令时,它返回 null 并将其设置为关键

另外我的 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)

答案1

您丢失了尾随的 $ $ARG1$,因此 OID 被完全忽略(Nagios 会将 $ARG1 传递给 shell,后者会将其取消引用为“”)。

您应该对脚本中的 $1、$2 和 $3 添加一些健全性检查,以防止将来发生这种情况。

相关内容