试图使用PYSNMP加载自定义MIB文件的错误



要与Alpha Technologies的Cordex接口,我需要使用SNMP协议。为了使某些方面有效,我一直在介绍PYSNMP的文档和示例,并且在使用Alpha Technologies的外部MIB文件时,我遇到了特定的问题。我的第一个测试是以下内容:

from pysnmp.hlapi import *
from pysnmp.smi import builder, view, compiler, rfc1902
from pysnmp import debug
#debug.setLogger(debug.Debug('all'))
debug.setLogger(debug.Debug('msgproc', 'mibbuild'))
mibBuilder = builder.MibBuilder()
mibViewController = view.MibViewController(mibBuilder)
test = ObjectIdentity('SNMPv2-MIB', 'sysDescr').addAsn1MibSource('file:///C:/Users/SLN9000/Repositories/cordex/MIB/@mib@')
test.resolveWithMib(mibViewController)
test.getOid()

当我这样做时,它会正确打印出正确的OID:

>>> ObjectName('1.3.6.1.2.1.1.1')

但是,在查看调试日志时,它似乎正在使用PYSNMP库中编译的MIB文件,而不是位于" C:/users/sln9000/repositories/cordex/cordex/mib/@mib/@mib/@mib中的asn.1文件@"。当我为Alpha Technologies的MIB文件做类似的事情

from pysnmp.hlapi import *
from pysnmp.smi import builder, view, compiler, rfc1902
from pysnmp import debug
#debug.setLogger(debug.Debug('all'))
debug.setLogger(debug.Debug('msgproc', 'mibbuild'))
mibBuilder = builder.MibBuilder()
mibViewController = view.MibViewController(mibBuilder)
test = ObjectIdentity('03409602D__Alpha_System_Controller', 'dcpower', 1).addAsn1MibSource('file:///C:/Users/SLN9000/Repositories/cordex/MIB/')
test.resolveWithMib(mibViewController)
test.getOid()

它在步骤test.resolveWithMib(mibViewController)上失败,而错误

pysnmp.smi.error.mibnotfounderror:03409602d__ alpha_system_controller 汇编错误:丢失

对我来说,我做错了什么。我正在使用的MIB文件可以从此处下载。任何帮助都将不胜感激!

我当前的解决方法是用mibdump.py工具手动编译所有MIB文件。不是真正可扩展的,但至少它可以让我继续工作。

看起来像是它们在03409602D__Alpha_System_Controller文件中运送的MIB的规范名称是AlphaPowerSystem-MIB(从该文件的第一行)。我认为您应该更好地将此文件重命名为规范名称以简化问题。

其他文件中的其他文件似乎是标准SNMP MIB的副本。Pysnmp可以自己使用它们 - 这些核心MIB是特定于实现的。因此,您不需要其余的MIB。

完成上述操作后,您应该能够这样执行MIB查询:

test = ObjectIdentity('AlphaPowerSystem-MIB', 'dcpower', 1).addAsn1MibSource('file:///C:/Users/SLN9000/Repositories/cordex/MIB/')

它与基于pysnmp的snmptranslate.py工具一起使用:

$ snmptranslate.py -On  AlphaPowerSystem-MIB::dcpower

1.3.6.1.4.1.7309.4

最新更新