【问题标题】:How to get OIDs from a MIB file?如何从 MIB 文件中获取 OID?
【发布时间】:2012-09-20 07:10:16
【问题描述】:

我想从经理拥有的 MIB 文件中读取所有对象。

我开发了一种工具来从启用了 SNMP 的代理获取一些数据。我想通过显示经理的 MIB 文件中的所有 OID 来增强该工具。

我正在使用 NET-SNMP 库。

我看到了以下内容:

/usr/local/share/snmp/mibs/ 

文件夹,它包含许多 MIB 文件,但我怎样才能形成它拥有的 OID 列表?

我浏览了 MIB 并查看了结构,但是如何获取 MIB 文件中提到的每个对象的 OID?

我想按如下方式列出所有 OID:

  1. SNMPv2-MIB::sysDescr.0 = .1.3.6.1.2.1.1.1.0
  2. SNMPv2-MIB::sysObjectID.0 = .1.3.6.1.2.1.1.2.0 ...等

我想扫描所有 MIB 文件并从文件中找到所有 OID。

我该怎么做?

【问题讨论】:

    标签: snmp net-snmp mib


    【解决方案1】:

    使用来自net-snmp 库的snmptranslate-命令。尝试使用以下参数:

    -M "directory containing your MIB file"
    -m ALL
    -Pu
    -Tso
    

    【讨论】:

      【解决方案2】:

      在遇到一些问题后,我设法使用以下命令生成了 OID。

      snmptranslate -Pu -Tz -M ~/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp:`pwd` -m module_name_NOT_file_name > module_name.oid
      

      【讨论】:

        【解决方案3】:

        要从正在运行的SNMP 服务器中提取OIDs,您可能需要使用工具snmpwalk 并使用-Ci 选项。该工具自带Net-SNMP

        【讨论】:

          【解决方案4】:

          另外两个 SO QA 展示了如何在不走运行系统的情况下做到这一点:

          这只是起点。从那里开始有很多编码。

          更新:另一个不错的工具是封装在 SNMP::MIB::Compiler 中的 perl SNMP 编译器。使用 perl 中的脚本,您可以将所有 MIB 元素/组件拉入内部数据结构,您可以从那里挑选任何信息,方法是查看结构树或转储树并对转储进行后解析。

          【讨论】:

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