Ubuntu 上的 SNMP MIB - MIB 中的错误

djn*_*jna 9 ubuntu snmp

我担心 Ubuntu 的明确 MIB 文件集似乎存在语法错误。我是否使用了错误的 MIB?

我用过了

sudo apt-get install snmp-mibs-downloader    
sudo download-mibs
Run Code Online (Sandbox Code Playgroud)

要安装大量似乎运行良好的 MIB,我几乎可以按预期进行 snmpwalk 和 snmptranslate。但是,每次运行这些命令时我都会看到一些错误,表明 MIB 有一些语法错误。

Bad operator (INTEGER): At line 73 in /usr/share/mibs/ietf/SNMPv2-PDU
Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }
Undefined identifier: mib-2 near line 18 of /usr/share/mibs/ietf/IPATM-IPMC-MIB
Expected "::=" (RFC5644): At line 493 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Expected "{" (EOF): At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad object identifier: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Bad parse of OBJECT-IDENTITY: At line 651 in /usr/share/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB
Run Code Online (Sandbox Code Playgroud)

仅举一个例子:

Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }
Run Code Online (Sandbox Code Playgroud)

这里的错误是导入中缺少 mib-2。

虽然我可以尝试解决这些错误,但我担心我没有使用正确的 MIB。这些错误肯定不应该发生吗?

我的 snmp.conf 有

mibs + ALL

我认为这是必要的,如果按照某些建议,我们评论该行,我们在遍历树时似乎没有获得完整的 OID 集。

tel*_*coM 11

您使用的是哪个版本的 Ubuntu?

Ubuntu 可能snmp-mibs-downloader从 Debian获取其软件包,而 Debian 对可再发行性非常严格,因此snmp-mibs-downloader它从公共来源获取其 MIB,包括实际的 RFC 和 Internet 上的其他标准文档。

然而,其中一些标准文件包含拼写错误和其他错误……在某些情况下,修复这些显然需要发布相应标准文件的全新修订版。而需要相当多的时间和精力。(可能有官方勘误文件,但不一定是适合自动打补丁的格式。)

在 Debian 中,当前版本snmp-mibs-downloader包含一个.diff文件,用于修复各种基于 RFC 的 MIB 中的许多错误,但并非总是如此。您包含的错误列表对我来说很熟悉......

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=584657

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689483

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689485

所有这些以及更多内容都在snmp-mib-downloader最初于 2016 年 9 月发布的1.1+nmu1 版本中得到修复。如果您使用的版本早于此,并且您的 Ubuntu 版本没有可用的更新,请考虑在某些版本上下载 MIB具有更新版本软件包的其他计算机,然后将生成的固定 MIB 复制到您需要的任何位置。

在那之后,应该只剩下一个错误:

Bad operator (INTEGER): At line 73 in /usr/share/snmp/mibs/ietf/SNMPv2-PDU
Run Code Online (Sandbox Code Playgroud)

该网页有一个包含固定 SNMPv2-PDU MIB 文件的 pastebin链接。修改只是将命名常量整数值max-bindings替换为其实际数值并注释掉常量定义,同样将BulkPDU的定义调整为完全自包含。这些更改使 net-snmp MIB 解析器满意。

或者,您可以删除 SNMPv2-PDU MIB 文件,因为它只是 SNMPv2 协议数据单元的正式定义,并且该定义已内置于大多数 SNMP 工具中。