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/[aZ]//'` /bin/sleep $WAITTIME VAR2=`/usr/lib/nagios/plugins/check_snmp -H $HOSTNAME -C $COMMUNITY -o $OID|cut -d"=" -f2|sed 's/[aZ]//'` 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)

你在$ARG1$ $上丢失了$ARG1$ ,所以OID被完全忽略了(Nagios会将$ ARG1传递给shell,这会将其解引用为“”)。

您应该在脚本中添加一些$ 1,$ 2和$ 3的理智检查,以防止将来出现这种情况。