Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySNMP能否找到OID的MIB名称?_Python_Pysnmp_Mib - Fatal编程技术网

Python PySNMP能否找到OID的MIB名称?

Python PySNMP能否找到OID的MIB名称?,python,pysnmp,mib,Python,Pysnmp,Mib,我需要做的是编写一个函数来查找给定OID的MIB名称。 例如,当我给出“1.3.6.1.2.1.31.1.1.1.6”作为参数时,它应该返回“ifHCInOctets”。我一直在搜索PySNMP文档和堆栈溢出,但没有发现任何问题:这是PySNMP可以做到的,还是我必须为MIB文件编写解析器?PySNMP可以做到,您不需要创建MIB解析器。;-) 如果您遵循以下步骤,具体如下: from pysnmp.smi import builder, view, compiler mibBuilder =

我需要做的是编写一个函数来查找给定OID的MIB名称。
例如,当我给出“1.3.6.1.2.1.31.1.1.1.6”作为参数时,它应该返回“ifHCInOctets”。我一直在搜索PySNMP文档和堆栈溢出,但没有发现任何问题:这是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的未解析尾部可能出现在
后缀中

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


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

你好,Ilya,我尝试了一个名为ORION-BASE-MIB的MIB的代码,它给出了以下错误>>`pysnmp.smi.error.MibNotFoundError:ORION-BASE-MIB编译错误:缺失;丢失的丢失的在MIB ORION-BASE-MIB的symbolTable中没有模块“SNMPv2 SMI”`您能提供帮助吗?您可能在搜索路径(即sources变量)中缺少
SNMPv2 SMI
(和其他依赖项)。