我目前正在尝试在 SNMPWalk 上获取扩展输出。
我已经安装了 snmp-mibs 下载程序并一直在运行 download-mibs。
我正在使用以下命令:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB::nsExtendObjects
并得到以下错误:
MIB search path:
/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/var/lib/mibs:/var/lib/mibs/ietf:/var/lib/mibs/iana
Cannot find module (nsExtendObjects): At line 1 in (none)
我可以确认我的模块位于正确的位置,正如我手动验证的那样。
我尝试使用 -M 来指定模块的位置。
我使用NET-SNMP版本:5.9
发生错误后,我得到的输出与未使用扩展模式时相同。
我还可以确认应该有不同的输出,因为使用相同配置的另一台机器能够获得扩展输出。 “public”字符串是正确的。
感谢您的任何帮助 :)
答案1
该-m
选项采用一个参数:以冒号分隔的列表MIB 模块名称,而不是各个 MIB 对象的名称。
结果,-m NET-SNMP-EXTEND-MIB::nsExtendObjects
被解析为三个 MIB 模块名称:
NET-SNMP-EXTEND-MIB
这是有效的 MIB 模块名称<null>
这显然被忽略了nsExtendObjects
它实际上是 NET-SNMP-EXTEND-MIB 模块中 MIB 对象的名称。
指定开始遍历的 OID 实际上是可选的snmpwalk
:如果未指定,它将默认为 SNMPv2-SMI::mib-2
,这就是为什么您没有收到有关错误语法的错误消息的原因。相反,该命令尝试查找名为的 MIB 模块nsExtendObjects
,但显然没有找到。
如果您出于某种原因想继续使用该-m
选项,正确的语法是:
snmpwalk -v2c -c public [ip] -m NET-SNMP-EXTEND-MIB NET-SNMP-EXTEND-MIB::nsExtendObjects
换句话说,第一个NET-SNMP-EXTEND-MIB
是选项的参数-m
,第二个是您希望开始行走的 OID 的一部分。
但在这种情况下,您可能可以完全省略该-m
选项:
snmpwalk -v2c -c public [ip] NET-SNMP-EXTEND-MIB::nsExtendObjects
这两种形式应该产生相同的结果。
如果download-mibs
已成功完成,您/usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
的系统上应该有一个名为的文件。
$ sha256sum /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt
ad05abc5ec39107a140d46e4e62e3fc0cf38eb26c1abe634fd7e9a7c7715e64e /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt