访问函数Counter64时PySNMP MIB模块失败

1 投票
1 回答
898 浏览
提问于 2025-04-17 11:57

我在尝试运行一个基于MIB的SNMP脚本时遇到了问题。这个脚本无法运行Counter64这个功能,尽管我知道包含这个功能的模块已经安装了。这个MIB模块是自动生成的,所以在安装了缺失的模块后,我尝试重新生成它,但问题依然没有解决。

代码如下:

#!/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()
mibSources = mibBuilder.getMibSources() + ( builder.DirMibSource( '/path/to/command/mibs', ), )
mibBuilder.setMibSources( *mibSources )
print mibBuilder.getMibSources()
mibBuilder.loadModules( 
    'NS-MIB-smiv2',
    )
mibView = view.MibViewController( mibBuilder )
errorIndication, errorStatus, errorIndex, \
                 varBindTable = cmdGen.nextCmd( 
    cmdgen.CommunityData( 'Name', 'Community' ),
    cmdgen.UdpTransportTarget( ( 'IP Address', 161 ) ),
    ( ( '', 'serverName' ), ),
    )

print varBindTable

我知道环境中的变量是正确的,因为我可以使用手动分配的OID查询它们,没有任何问题。我收到的错误追踪信息是:

Traceback (most recent call last):

  File "./snmpcollectorexample.py", line 12, in <module>

    'NS-MIB-smiv2',

  File "/usr/lib/python2.7/site-packages/pysnmp-4.2.1-py2.7.egg/pysnmp/smi/builder.py", line 221, in loadModules

pysnmp.smi.error.SmiError: MIB module "/path/to/command/mibs/NS-MIB-smiv2.py" load error: name 'Counter64' is not defined

有没有人有建议?Counter64是pycopia-SMI这个Python模块的一部分,我已经确认它已经安装了。但我不太确定该如何解决这个问题。

1 个回答

1

找到了问题所在。出于某种原因,当我通过所有转换命令运行我的MIB时,build-pysnmp-mib这个工具没有把Counter64的条目添加到mibBuilder.importSymbols()里。我手动添加了一下,然后就顺利进行下去了。

撰写回答