pysnmp не загружает MIB

У меня есть два файла MIBS, MIB1 и MIB2, MIB2 импортирует элементы из MIB1. Я запускал smilint и build-pysnmp-mib, на самом деле smidump, так как я не смог предварительно загрузить элементы экспорта файла с помощью build-pysnmp-mib.

С помощью smidump у меня есть два модуля MIB .py, MIB1.py и MIB2.py, однако, когда я пишу свой SNMP-агент, pysnmp не может найти модуль экспорта MIB1.py. я получил эту ошибку

Traceback (most recent call last):
  File "snmpagent.py", line 165, in <module>
    agent = SNMPAgent(objects)
  File "snmpagent.py", line 90, in __init__
    mibObject.objectType)
  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 299, in importSymbols
    self.loadModules(modName, **userCtx)
  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 259, in loadModules
    'MIB module \"%s\" load error: %s' % (modPath, traceback.format_exception(*sys.exc_info()))
pysnmp.smi.error.SmiError: MIB module "./MIB2.py" load error: ['Traceback (most recent call last):\n', '  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 255, in loadModules\n    exec(modData, g)\n', '  File "<string>", line 17, in <module>\n', '  File "/usr/lib/python2.7/dist-packages/pysnmp/smi/builder.py", line 302, in importSymbols\n    \'No module %s loaded at %s\' % (modName, self)\n', 'SmiError: No module MIB1 loaded at <pysnmp.smi.builder.MibBuilder instance at 0x7f99213c0b48>\n']

Я попытался обновить SMIPATH, а также вручную загрузить модуль .py с помощью

mibPath = mibBuilder.getMibSources() + (builder.DirMibSource('path'),)
mibBuilder.setMibSources(*mibPath)
mibBuilder.loadModules(
    'MIB1',
)

Я запускаю pysnmp на Ubuntu 14.04 и Python 2.7.6.

Может ли кто-нибудь помочь мне в этом?


person jht    schedule 17.03.2016    source источник


Ответы (1)


Используйте инструмент mibdump.py из pysmi для компиляции MIB ASN.1 в модуль Python/pysnmp. Этот инструмент будет обрабатывать все зависимости и создавать гораздо лучшие MIB. Сгенерированные MIB обратно совместимы со всеми предыдущими версиями pysnmp. Пакет pysmi готов к работе на Python 2 и 3.

Начиная с pysnmp 4.3, явный этап компиляции MIB ASN.1 не требуется — pysnmp 4.3+ автоматически вызывает pysmi для поиска/загрузки/компиляции MIB ASN.1 и передачи ее pysnmp.

Всегда лучше по возможности обновиться до последней версии pysnmp.

person Ilya Etingof    schedule 18.03.2016
comment
Есть ли способ заставить mibdump.py работать с python 2.7? спасибо - person jht; 21.03.2016
comment
mibdump.py работает с Python 2.7. Как вы думаете, почему это не так? - person Ilya Etingof; 21.03.2016
comment
Мне удалось запустить его, но все та же ошибка, куда мне скопировать новые файлы .py? - person jht; 21.03.2016
comment
Вы можете разместить файлы MIB .py в любом месте, а затем настроить pysnmp для их использования, вызвав .DirMibSource(‹path›) в своем скрипте. - person Ilya Etingof; 02.04.2016
comment
Удалось ли вам запустить его успешно? Я сталкиваюсь с той же проблемой. - person npatel; 25.10.2017
comment
@npatel Не могли бы вы поделиться фрагментом кода и ошибкой, которую он вызывает? Вот страница руководства, объясняющая как установить путь поиска для Pythonized MIB. - person Ilya Etingof; 27.10.2017