【问题标题】:Get "top" OID for given MIB获取给定 MIB 的“顶级”OID
【发布时间】:2018-04-17 04:26:54
【问题描述】:

我想获取给定 MIB 的顶部“OID”。即;

CISCO-SMI = 1.3.6.1.4.1.9

CISCO-PROCESS-MIB = 1.3.6.1.4.1.9.9.109

我可以通过谷歌搜索轻松获取此信息,但我需要从系统中获取此信息,最好使用本机 SNMP 命令。我不能走路的设备。我可以做一个 snmptranslate,它将为我提供该 MIB 的所有 OID,但我只想要标识 MIB 的 OID;

snmptranslate -Tso -m /usr/share/snmp/mibs/CISCO-PROCESS-MIB.txt

.1.3 .iso.org

...

.1.3.6.1.4.1.9 .iso.org.dod.internet.private.enterprises.cisco

...

.1.3.6.1.4.1.9.9.109 .iso.org.dod.internet.private.enterprises.cisco.ciscoMgmt.ciscoProcessMIB

所以我需要能够说 CISCO-PROCESS-MIB = .1.3.6.1.4.1.9.9.109

我已经做了很多 google-fu,但没有想出任何能给我上述信息的东西。是否可以不用外接mib浏览工具?

【问题讨论】:

  • MIB 文档可以没有这样的“顶级”OID 并且仍然有效(阅读 SMI 规范),因此依赖它通常是个坏主意。你为什么要这么做?
  • 我想编写一个脚本来确定与 MIB 相关的 OID。更好的方法可能是解释可由给定 MIB 翻译的“最高级别”OID。
  • MIB 编译器/解析器很容易分辨出哪个 OID 属于哪个 MIB 文档,因此您的“破解”毫无意义。只有某些 MIB 文档遵循您喜欢的约定,以便您可能找到“顶级”OID,而其他 MIB 文档不遵循该约定,它们可以定义任何他们喜欢的 OID 模式。如果您不喜欢“外部 MIB 浏览工具”,那么您的脚本必须做完全相同的工作,我想知道您是否比任何供应商更有能力(免责声明:我是供应商之一)。跨度>

标签: snmp mib


【解决方案1】:

所有 SNMP OID 的集合可以表示为一棵树,其中一个特定的 MIB 文件定义了一个(可能为空的)带有叶节点(实际 MIB 对象)的子林。 IE。 MIB 文件定义了一组子树。如果幸运的话,子树集从单个节点开始,并且没有其他 MIB 定义该节点下的 OID。

鉴于此背景,在 MIMIC SNMP 模拟器中,我们将 TOPOID 定义为包含 MIB 中定义的所有 OID 的最低(层次结构中)OID。在 MIMIC 中,我们为模拟器知道的所有 MIB 维护一组 OID,以便您可以从任意叶子 OID 中快速确定它位于哪个 MIB(通过查找层次结构中的最低 TOPOID),例如。

% ./oidinfo 1.3.6.1.4.1.9.9.109
INFO  04/19.10:58:34 - OID 1.3.6.1.4.1.9.9.109 = ciscoProcessMIB
INFO  04/19.10:58:34 - MIB = cisco/CISCO-PROCESS-MIB
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2012-05-31
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    相关资源
    最近更新 更多