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