SNMPget和bash会给出奇怪的结果(gauge32值不正确)

对我来说真是奇怪,但这是问题所在。

如果我使用SNMP客户端(如ManageEngineMibBrowser)来查询设备,我会看到合理的数字:

dpStatusMemoryStatusUsage.0 97 dpStatusMemoryStatusTotalMemory.0 33015552 dpStatusMemoryStatusUsedMemory.0 31928048 dpStatusMemoryStatusFreeMemory.0 1087504 dpStatusMemoryStatusReqMemory.0 4294967295 dpStatusMemoryStatusXG4Usage.0 4294967295 dpStatusMemoryStatusHoldMemory.0 4294967295 

我如何certificate合理? 好简单的math表明,如果TotalMemory是3301552和UsedMemory是31928048那么用量的97%的百分比似乎是正确的(加上我双重检查与GUI 🙂

现在我在Linux上使用snmpget运行相同的命令,并获得以下内容(它们是OIDS,但顺序与上面相同):

 SNMPv2-SMI::enterprises.14685.3.1.5.1.0 = Gauge32: 36 SNMPv2-SMI::enterprises.14685.3.1.5.2.0 = Gauge32: 99197400 SNMPv2-SMI::enterprises.14685.3.1.5.3.0 = Gauge32: 36004164 SNMPv2-SMI::enterprises.14685.3.1.5.4.0 = Gauge32: 63193236 SNMPv2-SMI::enterprises.14685.3.1.5.5.0 = Gauge32: 4294967295 SNMPv2-SMI::enterprises.14685.3.1.5.6.0 = Gauge32: 4294967295 SNMPv2-SMI::enterprises.14685.3.1.5.7.0 = Gauge32: 4294967295 

正如你所看到的,它们都是Gauge32的types,但是前4个值是完全不同的! 我需要做一些转换? 如果是这样,为什么前四个不同,最后三个不是同一types? 我真的很笨? 🙂

我可以注意到,相同的值4,294,967,295表示gauge32的最大值(2 ^ 32) – 1。这可能是为什么它在两次读数之间没有改变。

要检查不同的值,您需要将它们与实际读数(同时进行)进行比较,以确定完成了哪种types的转换。 这是我现在可以告诉的最好的:)