PySNMP能找到OID的MIB名称吗



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

使用pysnmp可以不需要创建MIB解析器

如果你遵循这个例子,特别是这些部分:

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之前,您需要加载定义OID的MIB。OID的未解析尾部可能出现在suffix中。

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

顺便说一句,同样的工具可以构建一个JSON索引,如下所示。您可以使用它将OID映射到定义它的MIB模块上。

最新更新