Ошибка модуля PySNMP MIB при попытке доступа к функции Counter64 - PullRequest
1 голос
/ 30 января 2012

Попытка запустить скрипт SNMP на базе MIB, и я столкнулся с проблемой. Невозможно запустить функцию 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 является частью Python-модуля Pycopia-SMI, и я подтвердил, что он установлен. Но я не уверен, как решить эту проблему.

1 Ответ

1 голос
/ 30 января 2012

Обнаружена проблема. По какой-то причине оболочка build-pysnmp-mib при запуске моей MIB через все команды преобразования не добавляла записи Counter64 в mibBuilder.importSymbols(). Вручную добавили его, и он сразу переместился.

...