【问题标题】:Can PySNMP find the MIB name for an OID?PySNMP 可以找到 OID 的 MIB 名称吗?
【发布时间】:2018-12-14 12:15:01
【问题描述】:

我需要编写一个函数来查找给定 OID 的 MIB 名称。 例如,当我给出“1.3.6.1.2.1.31.1.1.1.6”作为参数时,它应该返回“ifHCInOctets”。我一直在搜索 PySNMP 文档和 Stack Overflow,但没有找到任何东西:这是 PySNMP 可能实现的,还是我必须为 MIB 文件编写解析器?

【问题讨论】:

    标签: python pysnmp mib


    【解决方案1】:

    使用 pysnmp 是可能的,您不需要创建 MIB 解析器。 ;-)

    如果你关注this example,特别是这些作品:

    from pysnmp.smi import builder, view, compiler
    
    mibBuilder = builder.MibBuilder()
    compiler.addMibCompiler(mibBuilder, sources=['/usr/share/snmp/mibs'])
    mibBuilder.loadModules('IF-MIB', ...)
    mibView = view.MibViewController(mibBuilder)
    
    oid, label, suffix = mibView.getNodeName((1,3,6,1,2,1,31,1,1,1,6))
    

    label 变量应返回 ifHCInOctets。这里需要注意的是,您需要先加载定义 OID 的 MIB,然后才能进行查找。未解析的 OID 尾部可能出现在 suffix 中。

    另一种方法是使用 pysmi 的 mibdump 工具(或底层的 pysmi 库)将 ASN.1 MIB 转换为 JSON 以供您的应用程序进一步处理。

    顺便说一句,同样的工具可以构建一个类似于this 的 JSON index。您可以使用它将您的 OID 映射到定义它的 MIB 模块。

    【讨论】:

    • 您好 Ilya,我尝试了您的代码用于名为 ORION-BASE-MIB 的 MIB,它给出了以下错误 >> ` pysnmp.smi.error.MibNotFoundError: ORION-BASE-MIB 编译错误(s ): 失踪;失踪;失踪; MIB ORION-BASE-MIB 的 symbolTable 中没有模块“SNMPv2-SMI”`你能帮忙吗?
    • 您可能在搜索路径(即源变量)中缺少SNMPv2-SMI(和其他依赖项)。
    猜你喜欢
    • 1970-01-01
    • 2015-01-29
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多