Pysnmp проблема с загрузкой MIB текстовых и py файлов - PullRequest
0 голосов
/ 03 января 2019

У меня проблемы с пакетом pysnmp.

Я хочу подключиться к устройству OLT от Huawei MA5600.У меня есть его MIB в текстовом формате * .mib, идея состоит в том, чтобы получить среди прочего температуру, энергопотребление

У меня есть следующий код

from pysnmp.hlapi import *
from pysmi import debug
#debug.setLogger(debug.Debug('compiler'))


errorIndication, errorStatus, errorIndex, varBinds = next(
    getCmd(SnmpEngine(),
           CommunityData('MyCommunity'),
           UdpTransportTarget(('192.168.1.2', 161)),
           ContextData(),
           ObjectType(ObjectIdentity('1.3.6.1.2.1.1.6.0')),
           ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0')),
           ObjectType(ObjectIdentity('1.3.6.1.2.1.2.2.1.10')),
           ObjectType(ObjectIdentity('1.3.6.1.4.1.2011.2.6.7.1.1.1.1.11'))\
           .addAsn1MibSource('file:///home/devel/mib/',
                 'file:///home/devel/mib'
                 'http://mibs.snmplabs.com/asn1/@mib@',
                 'http://mibs.snmplabs.com/asn1/',
                 'file:///home/devel/mib/public/',
                 'file:///home/devel/mib/public')
           )

)



if errorIndication:
    print(errorIndication)
elif errorStatus:
    print('%s at %s' % (errorStatus.prettyPrint(),
                        errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
    for varBind in varBinds:
        print(' = '.join([x.prettyPrint() for x in varBind]))

В этом случае у меня есть следующий ответ:

(sent) C:\DESARROLLOS\system>python v2c-get.py
SNMPv2-MIB::sysLocation.0 = EPL
SNMPv2-MIB::sysDescr.0 = Huawei Integrated Access Software
SNMPv2-SMI::mib-2.2.2.1.10 = No Such Instance currently exists at this OID
SNMPv2-SMI::enterprises.2011.2.6.7.1.1.1.1.11 = No Such Instance currently exists at this OID

Я также пытался использовать функцию addMibSource для добавления MIBs Python, у меня есть пакет pysnmp_mibs, но он также не работает.

Следует отметить, что сЯ получаю запрашиваемую информацию:

snmpwalk -v 2c -c MyCommunity 192.168.1.2 1.3.6.1.4.1.2011.2.6.7.1.1.1.1.1

Следует отметить, что с помощью команды я получаю запрашиваемую информацию.

snmpwalk -v 2c -c MyCommunity 192.168.1.2 1.3.6.1.4.1.2011.2.6.7.1.1.1.1.1

Буду признателен, если кто-то случится с чем-то похожим и знает, что делать.Я использую Python 3.6, pysmi == 0.3.2, pysnmp == 4.4.6 и pysnmp-mibs == 0.1.6

1 Ответ

0 голосов
/ 04 января 2019

Если вы считаете, что вы должны получить какое-то значение в ответ вместо «Нет такого экземпляра», то проблема в том, что вы запрашиваете объект (OID), который не существует на устройстве, или у вас нет доступа к нему.

Если вы хотите, чтобы идентификаторы OID в ответе были преобразованы в понятные для человека имена, вы должны предварительно загрузить MIB (ы), которые определяют эти OID, например ObjectType (ObjectIdentity ('1.3.6.1.2.1.2.2).1.10 ')). loadMibs (' MY-MIB ',' MY-OTHER-MIB ').

В любом случае, возможно, лучшее решение - запросить объект (ы)по именам:

ObjectType(ObjectIdentity('SNMPv2-MIB', 'sysLocation', 0))

... а не по OID.Запрос по имени автоматически загрузит MIB, на который вы ссылаетесь.

Быстрый документ здесь .

...