在 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 管理知识,这可能是“安全的”。
但是,我做的第一件事是删除
-V systemonly
设置中的 rocommunity
部分;这将允许通过社区字符串 public
访问(只读)所有可用的 SNMP 信息。
如果您这样做,那么您可能会看到您所期望的内容,即一页又一页的 SNMP 信息,您可以使用它们来衡量盒子的性能。
我知道这个线程可能很旧,我修复它是使用: ro社区公众
这应该可以解决问题。
简单来说,这不是一个错误,实际上,当你“走上”代理上的所有 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
然后重新启动服务
您会看到两个输入的输出都会发生变化