为什么 snmpwalk 期间使用了错误的 MIB?

为什么 snmpwalk 期间使用了错误的 MIB?

1.3.6.1.2.1.43.11.1.1.9对属于 的PRINTER-MIB以下OID 运行 snmp walkprtMarkerSuppliesLevel会返回SNMPv2-SMI值。我想它们是正确的,但是为什么这里引用了 SNMPv2-SMI MIB?

我在 Mac 上运行 DataDog 代理,并已下载并将 PRINTER-MIB 放置在适当位置:/usr/share/snmp/mibs。(DataDog 代理无法收集指标,因为我似乎需要在 python 中格式化 MIB,但这是在此之后要处理的另一个问题)。

输出如下:

snmpwalk -c public -v 2c 192.168.1.14 1.3.6.1.2.1.43.11.1.1.9 SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: 800 SNMPv2-SMI::mib-2.43.11.1.1.9.1.2 = INTEGER: 200 SNMPv2-SMI::mib-2.43.11.1.1.9.1.3 = INTEGER: 4000 SNMPv2-SMI::mib-2.43.11.1.1.9.1.4 = INTEGER: 2000 SNMPv2-SMI::mib-2.43.11.1.1.9.1.5 = INTEGER: 2400

答案1

我既不使用 datadog,也不是 SNMP 专家,但似乎“SNMPv2-SMI::mib-2”是一种(有点)请求的 OID 第一部分的简写形式为“1.3.6.1.2.1”。如果您点击上一个链接,您将看到 43 被列为默认打印机 MIB。如果您在所有答案中将“SNMPv2-SMI::mib-2”替换为“1.3.6.1.2.1”,您将得到与原先相同的 OID在 OIDview 中列出 prtMarkerSuppliesLevel在默认打印机 MIB 上。

答案2

除非您指示,否则 snmpwalk 不会使用 PRINTER-MIB。

查看 snmpcmd 的管理,查找 -m 和 -M 选项。

如果您在请求中引用 PRINTER-MIB,snmwalk 实际上会解码它:

(通过数字符号引用的 OID)

bash-3.2$ snmpwalk -v2c -c public 192.168.1.14 1.3.6.1.2.1.43.11.1.1.9
SNMPv2-SMI::mib-2.43.11.1.1.9.1.1 = INTEGER: 90
SNMPv2-SMI::mib-2.43.11.1.1.9.1.2 = INTEGER: 30
SNMPv2-SMI::mib-2.43.11.1.1.9.1.3 = INTEGER: 40
SNMPv2-SMI::mib-2.43.11.1.1.9.1.4 = INTEGER: 30
SNMPv2-SMI::mib-2.43.11.1.1.9.1.5 = INTEGER: 90

(通过符号表示法引用的 OID)

bash-3.2$ snmpwalk -v2c -c public 192.168.1.14 Printer-MIB::prtMarkerSuppliesLevel.1
(bunch of error messages for missing MIBS that PRINTER-MIB referenced deleted)
Printer-MIB::prtMarkerSuppliesLevel.1.1 = INTEGER: 90
Printer-MIB::prtMarkerSuppliesLevel.1.2 = INTEGER: 30
Printer-MIB::prtMarkerSuppliesLevel.1.3 = INTEGER: 40
Printer-MIB::prtMarkerSuppliesLevel.1.4 = INTEGER: 30
Printer-MIB::prtMarkerSuppliesLevel.1.5 = INTEGER: 90

(通过数字符号引用 OID,但强制加载 Printer-MIB)

bash-3.2$ snmpwalk -m +Printer-MIB -v2c -c public 192.168.1.14 1.3.6.1.2.1.43.11.1.1.9
(bunch of error messages for missing MIBS that PRINTER-MIB referenced deleted)
Printer-MIB::prtMarkerSuppliesLevel.1.1 = INTEGER: 90
Printer-MIB::prtMarkerSuppliesLevel.1.2 = INTEGER: 30
Printer-MIB::prtMarkerSuppliesLevel.1.3 = INTEGER: 40
Printer-MIB::prtMarkerSuppliesLevel.1.4 = INTEGER: 30
Printer-MIB::prtMarkerSuppliesLevel.1.5 = INTEGER: 90

使用“-m all”也有效。

哇,我们的打印机有相同的 IP 地址。

--肯

相关内容