snmpbulkget 给出的是下一个 oid 的值,而不是参数中提到的 oid。为什么?

snmpbulkget 给出的是下一个 oid 的值,而不是参数中提到的 oid。为什么?

我以为 snmpbulkget 的行为与 snmpget 类似,只不过它可以支持多个 oid 请求。但我看到了奇怪的行为。它给出了下一个 OID 信息,而不是所要求的信息:

snmpbulkget -Cr1 servername IF-MIB::ifSpeed.7.0 IF-MIB::ifInOctets.7 IF-MIB::ifInUcastPkts.7 IF-MIB::ifInNUcastPkts.7 IF-MIB::ifInNUcastPkts.7 IF-MIB::ifInDiscards.7 IF-MIB::ifInErrors.7 IF-MIB::ifOutOctets.7 IF-MIB::ifOutUcastPkts.7 IF-MIB::ifOutNUcastPkts.7 IF-MIB::ifOutDiscards.7 IF-MIB::ifOutErrors.7
IF-MIB::ifSpeed.8 = Gauge32: 10000000
IF-MIB::ifInOctets.8 = Counter32: 3674120514
IF-MIB::ifInUcastPkts.8 = Counter32: 2462391943
IF-MIB::ifInNUcastPkts.8 = Counter32: 19169575
IF-MIB::ifInNUcastPkts.8 = Counter32: 19169575
IF-MIB::ifInDiscards.8 = Counter32: 0
IF-MIB::ifInErrors.8 = Counter32: 775777
IF-MIB::ifOutOctets.8 = Counter32: 3824588280
IF-MIB::ifOutUcastPkts.8 = Counter32: 2866781089
IF-MIB::ifOutNUcastPkts.8 = Counter32: 0
IF-MIB::ifOutDiscards.8 = Counter32: 0
IF-MIB::ifOutErrors.8 = Counter32: 0

为什么?

答案1

snmpget将发送一个包含多个 OID 的数据包(您可以使用选项验证这一点-d)。因此,更改要使用的命令snmpget(并删除-Cr1选项)将实现您想要的效果。

或者你可以使用 BULKGET,IF-MIB::ifEntry它可以给你比你想要的更多。

snmpbulkget(或者更确切地说,底层的 GETBULK/GETNEXT)方法总是返回下一个树中的变量。

引自http://net-snmp.sourceforge.net/wiki/index.php/GETBULK...

GETNEXT 命令(GetnextRequest)从远程实体请求实例列表,但期望返回树中的下一个变量。

相关内容