我正在安装 Zabbix 以通过 snmp 从运行 Ubuntu 12.04 服务器的机器监控一些设备。
MIB 定义存在问题,因为 snmp 命令无法正确转换某些 MIB。我已经安装了“snmp-mibs 下载器“包,因此包含 MIB 描述的文件已正确安装。
MIB 仅被翻译以获取数字键(MIB 文件可供 snmp 命令访问),但由SNMP获取命令无法正确翻译密钥。我使用的 zabbix 模板确实需要翻译密钥(SNMPv2-MIB::sysUpTime.0), 因此,当前结果无法被识别并且会被忽略。
测试用例:
$ snmptranslate -On SNMPv2-MIB::sysUpTime.0
.1.3.6.1.2.1.1.3.0
$ snmpget -v 2c -c public 192.168.1.1 1.3.6.1.2.1.1.3.0
iso.3.6.1.2.1.1.3.0 = Timeticks: (2911822510) 337 days, 0:23:45.10
在另一台机器上(运行非常旧的基于 Red Hat 的发行版),snmp 命令按预期执行直接和反向转换:
# snmptranslate -On SNMPv2-MIB::sysUpTime.0
.1.3.6.1.2.1.1.3.0
# snmpget -v 2c -c public 192.168.1.1 1.3.6.1.2.1.1.3.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (2911819485) 337 days, 0:23:14.85
我的 Ubuntu 机器出了什么问题?我是不是漏掉了什么?
答案1
我发现在我的系统上安装了 snmp 和 snmpd 后,以下操作对我有用:
$ snmpget -m SNMPv2-MIB -v 2c -c 公共 127.0.0.1 1.3.6.1.2.1.1.3.0 SNMPv2-MIB::sysUpTime.0 = 时间刻度:(1422579)3:57:05.79
似乎有各种重叠的 MIB,所以我认为可能需要使用该-m
选项指定您想要的模块。
以下方法同样有效:
$ snmpget -v 2c -c public 127.0.0.1 SNMPv2-MIB::sysUpTime.0
SNMPv2-MIB::sysUpTime.0 = Timeticks: (129146) 0:21:31.46
因此,看起来如果您指定数字 OID 而不指定 MIB 模块snmpget
将返回数字显示,但如果您使用对特定 MIB 的符号引用来限定请求,则该 MIB 定义用于解释响应。
也可以看看man snmp.conf