在 Ubuntu 12.04 上,我尝试使用以下命令获取管理值的子树:
snmpwalk -v 2c -c public localhost
输出的最后一行是
iso.3.6.1.2.1.25.1.7.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
这是一个错误吗?一个警告?子树在那里结束吗?
这里发生的事情比你想象的要多。我在我构建的每一个新的 Ubuntu 机器上都会遇到这个问题,我确实认为这是一个问题(不是错误,而是一个问题 - 更多关于这个的进一步说明)。
这是技术上正确的解释(为什么这不是“错误”):
“此 MIB 视图中没有剩余变量”并不是特别错误;相反,它是关于您的请求的声明。该请求从一些简单的东西开始,比如“.1.3”,然后继续请求“下一个”词典 OID。它在最后一个之前获得了“下一个”OID,此时代理已通知您没有什么可看的了;不要打扰问。
现在,这就是我认为这是一个问题的原因(在这个问题的背景下):
安装“snmpd”并运行它的目的是收集有关盒子的有意义的信息;通常,此信息是面向性能的。例如,我需要了解的三个常规信息是网络接口信息(IF-MIB::ifHCInOctets 和 IF-MIB::ifHCOutOctets)、磁盘信息(UCD-SNMP-MIB::dskUsed 和 UCD-SNMP- MIB::dskTotal)和 CPU 信息(UCD-SNMP-MIB::ssCpuRawIdle、UCD-SNMP-MIB::ssCpuRawWait 等)。
默认的 Ubuntu “snmpd” 配置明确拒绝了此配置的所有有用信息(限制访问仅足以告诉您该框是 Linux 框的信息):
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
rocommunity public default -V systemonly
此配置将盒子锁定,如果它位于不安全的网络上且几乎没有可用的 SNMP 管理知识,这可能是“安全的”。
但是,我要做的第一件事是删除“rocommunity”设置的“-V systemonly”部分;这将允许通过公共字符串“public”访问(只读)所有可用的 SNMP 信息。
如果你这样做,那么你可能会看到你所期望的,这是你可以用来衡量你的机器性能的一页又一页的 SNMP 信息。
简而言之,这不是错误,实际上,当您“走上”代理上的所有 OID 时,它会显示您的这一行> 有时,它不会向您显示这一行,因为最后一个 OID 不在您的代理上(您已经了解了代理上的所有 OID,但还没有了解所有 OID)。
$ snmpwalk -v 2c -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
NET-SNMP-EXTEND-MIB::nsExtendObjects = No more variables left in this MIB View (It is past the end of the MIB tree)
您也可能会收到此错误,而您可以尝试查看已执行的脚本我修复了该问题以添加
view all included .1 80
重新snmpd.conf
启动服务
比你会看到你的输出对于两个输入都会改变
我知道这个线程可能很旧,我修复它是为了使用: rocommunity public
那应该可以解决问题。