【问题标题】:PySNMP Errors when working with MIB files使用 MIB 文件时出现 PySNMP 错误
【发布时间】:2012-02-19 16:49:01
【问题描述】:

我正在尝试在 PySNMP 中使用 MIB 文件。代码相当简单。没什么复杂的。只是试图获取 OID 下的信息。我使用的代码如下:

#!/usr/local/bin/python2.7

from pysnmp.smi import builder, view, error
from pysnmp.entity.rfc3413.oneliner import cmdgen

cmdGen = cmdgen.CommandGenerator()
mibBuilder = builder.MibBuilder()
mibPath = mibBuilder.getMibPath() + ( '/path/to/command/mibs', )
mibBuilder.setMibPath( *mibPath )
mibBuilder.loadModules( 
    'MIB-File',
    )
mibView = view.MibViewController( mibBuilder )
errorIndication, errorStatus, errorIndex, \
                 varBindTable = cmdGen.nextCmd( 
    cmdgen.CommunityData( 'Name', 'Community' ),
    cmdgen.UdpTransportTarget( ( 'IP Address', 161 ) ),
    ( ( '', 'serverName' ), ),
    )

print varBindTable

我知道放入其中的数据是准确的,因为当我使用 asynCommandGenerator.asyncNextCmd 使用相同的 udpTransportTargetCommunityData 时,它可以正常工作。另外,我看到的错误非常特定于 MibBuilder 组件。

我看到的错误是:

Traceback(最近一次调用最后一次):

文件“./snmpcollectortest.py”,第 11 行,在

'NS-MIB-smiv2',

文件“/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/pysnmp/smi/builder.py”,第 221 行,在 loadModules 中

pysnmp.smi.error.SmiError:MIB 模块“/path/to/command/mibs/MIB-File.py”加载错误:在搜索路径中找不到 MIB 文件“ASN1.py[co]”

更新:

我发现我没有安装 M2Crypto,这就是我找不到 ASN1.py 的原因。但是我已经纠正了这个问题,但我仍然遇到同样的错误。

【问题讨论】:

  • mibPath = mibBuilder.getMibPath() + ( '/path/to/command/mibs', ) 这实际上应该是一个有效的路径。还是你故意混淆了它?否则错误是找不到MIB。
  • 这是故意的,因为它是我业务环境中的路径。

标签: python mib pysnmp


【解决方案1】:

getMibPath()/setMibPath() 方法已过时。除非您使用 .egg pysnmp 或其 MIB 模块,否则它们不起作用。

您应该始终使用getMibSources()/setMibSources() 方法。这些适用于 .egg 和基于文件的设置。

mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('/path/to/command/mibs'),)
mibBuilder.setMibSources(*mibPath)
mibBuilder.loadModules(
    'MIB-File',
)

顺便说一句,pysnmp 不需要 M2Crypto,需要的是 pyasn1 和 pycrypto(仅用于 SNMPv3 加密)。

【讨论】:

  • 有趣。我将在星期一进入办公室时尝试进行这些更改。至于 M2Crypto,它是我知道的唯一提供 ASN1.py 模块的位置,该模块是 build-pysnmp-mib 创建的 pysnmp MIB 模块文件所需的。除非有其他方法可以将 MIB 转换为 pysnmp 模块?
  • 这绝对是朝着正确方向迈出的一步。改变这个解决了最初的 asn1.py 错误,我能够快速解决其他几个正在安装 pysnmp-mibs 模块的问题。但是现在我收到一个加载错误:名称“Counter64”未定义错误。我已经安装了 SMI 打包,所以我不确定是什么原因造成的。
  • 实际上我会在另一个问题中提出。你回答了这个,值得接受。谢谢伊利亚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多