如何从响应中删除数组?

时间:2015-08-19 00:34:01

标签: arrays bash snmp

我正在使用SNMPGET来识别某些电池的值。问题是电池4和8是可选的。因此,有时在获得电池电压时,响应可能会不一致,例如" 13.40"或者您得到的响应是"此OID目前不存在此类实例"。我的目标是收集数据并将其存储在数据库中。但有人可以推荐我如何管理电池4和8的不一致性吗?

IP=192.168.1.0


##MY MIB FILE
sysdesc=iso.3.6.1.2.1.1.1.0
mac=iso.3.6.1.4.1.5591.1.3.2.7.0
logical_name=iso.3.6.1.4.1.5591.1.3.1.1.0
Batt1_1_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.1.1
Batt1_2_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.1.2
Batt1_3_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.1.3
Batt1_4_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.1.4
Batt2_1_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.2.1
Batt2_2_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.2.2
Batt2_3_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.2.3
Batt2_4_VDC=1.3.6.1.4.1.5591.1.4.4.1.4.1.2.4

OUTPUT=`snmpget -v2c -c public -Oqv $IP'\
' $sysdesc'\
' $logical_name'\
' $mac'\
' $Batt1_1_VDC'\
' $Batt1_2_VDC'\
' $Batt1_3_VDC'\
' $Batt1_4_VDC'\
' $Batt2_1_VDC'\
' $Batt2_2_VDC'\
' $Batt2_3_VDC'\
' $Batt2_4_VDC`

eval ARRAY=($OUTPUT)
echo "${ARRAY[*]}"

1 个答案:

答案 0 :(得分:0)

您可以使用snmpwalk而不是snmpget。这将为您提供每个电池的值,无论有多少电池。您仍然需要遍历结果。如果您需要知道哪个值来自哪个电池,则必须放弃-Ov标志。

snmpget -v2c -c public -Oq 192.168.1.0 1.3.6.1.4.1.5591.1.4.4.1.4.1