首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySNMP MibNotFoundError -不编译MIB文件

PySNMP MibNotFoundError -不编译MIB文件
EN

Stack Overflow用户
提问于 2019-01-24 21:57:12
回答 1查看 665关注 0票数 0

我需要将本地.mib文件编译成PySNMP可以使用的格式。根据documentation的规定,这样的文件应该由PySNMP自动编译。

到目前为止,它可以处理随PySNMP一起安装的预编译文件,但不能处理任何本地文件。当我尝试指定我的.mib文件所在的位置时,我得到这个错误:

代码语言:javascript
复制
pysnmp.smi.error.MibNotFoundError: CISCO-IETF-IPMROUTE-MIB compilation error(s): missingcaused by <class 'pysnmp.smi.error.MibNotFoundError'>: MIB file "CISCO-IETF-IPMROUTE-MIB.py[co]" not found in search path (DirMibSource('/usr/lib/python3.4/site-packages/pysnmp/smi/mibs'), DirMibSource('/usr/lib/python3.4/site-packages/pysnmp/smi/mibs/instances'), DirMibSource('pysnmp_mibs'), DirMibSource('/root/.pysnmp/mibs'), DirMibSource('~/projects/nemo/MIBs'))

我的代码:

代码语言:javascript
复制
def find_name_type(oid, module):

    mibBuilder = builder.MibBuilder()
    compiler.addMibCompiler(mibBuilder, sources = ['~/projects/mibs'])
    mibBuilder.addMibSources(builder.DirMibSource('~/projects/mibs'))
    mibBuilder.loadModules(module)
    mibView = view.MibViewController(mibBuilder)
    oid, label, suffix = mibView.getNodeName(oid)

    modName, symName, suffix = mibView.getNodeLocation(oid)
    mibNode, = mibBuilder.importSymbols(modName, symName)
    data_type = mibNode.syntax.__class__.__name__
    return label[-1], data_type

当输入是例如

代码语言:javascript
复制
find_name_type((1,3,6,1,2,1,31,1,1,1,6), 'IF-MIB')

输出为ifHCInOctets Counter64,因为IF-MIB已经编译。任何其他.mib文件都不会编译,因此

代码语言:javascript
复制
find_name_type((1, 3, 6, 1, 4, 1, 9, 10, 117, 1, 1, 2, 1, 17), 'CISCO-IETF-IPMROUTE-MIB') 

引发上述错误。~/projects/mibs的内容如下:

代码语言:javascript
复制
CISCO-IETF-IPMROUTE-MIB.mib  
IF-MIB.mib
EN

回答 1

Stack Overflow用户

发布于 2019-01-24 23:10:10

我怀疑问题在于底层的pysmi没有将~扩展到用户名中。因此,要么尝试使用ASN.1 MIB绝对路径,要么自己扩展该路径:

代码语言:javascript
复制
compiler.addMibCompiler(mibBuilder, sources = [os.path.expanduser('~/projects/mibs')])

如果两者都不起作用,请尝试启用pysmi调试,以查看它在何处搜索ASN.1 MIB:

代码语言:javascript
复制
from pysmi import debug

debug.setLogger(debug.Debug('all'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54348320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档