PySNMP可以找到OID的MIB名称吗?

时间:2018-12-14 12:15:01

标签: python pysnmp mib

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

1 个答案:

答案 0 :(得分:2)

使用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,以供您的应用程序进一步处理。

顺便说一句,同一工具可以构建看起来像index的JSON this。您可以使用它将OID映射到定义了它的MIB模块上。