尝试使用pysnmp加载自定义MIB文件时出错

时间:2017-03-15 14:51:41

标签: python mib pysnmp

要与Alpha Technologies的Cordex接口,我需要使用SNMP协议。我一直在浏览pysnmp中的文档和示例,以便使某些方面有效,并且在使用alpha技术的外部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 / MIB / @ mib”中的ASN.1文件@”。 当我为Alpha技术的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文件可以从here下载。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

它们在03409602D__Alpha_System_Controller文件中发布的MIB的规范名称似乎是AlphaPowerSystem-MIB(来自该文件的第一行)。我认为您最好将此文件重命名为规范名称以简化问题。

.zip存档中的其他文件似乎是标准SNMP MIB的副本。 pysnmp可以使用它们自己的 - 这些核心MIB是特定于实现的。因此,您不需要该.zip中的其余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

相关问题