![snmpbulkget 给出的是下一个 oid 的值,而不是参数中提到的 oid。为什么?](https://linux22.com/image/691695/snmpbulkget%20%E7%BB%99%E5%87%BA%E7%9A%84%E6%98%AF%E4%B8%8B%E4%B8%80%E4%B8%AA%20oid%20%E7%9A%84%E5%80%BC%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E5%8F%82%E6%95%B0%E4%B8%AD%E6%8F%90%E5%88%B0%E7%9A%84%20oid%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我以为 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)从远程实体请求实例列表,但期望返回树中的下一个变量。