Python PySNMP SNMP-GET и интерпретация MIB - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок и просто пытаюсь понять основы. Я настроил PySNMP и протестировал его на своем принтере дома. Применяя пример, приведенный для «Получить SNMP-переменную» и «пройти весь MIB», я использую следующее.

http://snmplabs.com/pysnmp/quick-start.html

from pysnmp.hlapi import *

for (errorIndication,
 errorStatus,
 errorIndex,
 varBinds) in nextCmd(SnmpEngine(),
                      CommunityData('public'),
                      UdpTransportTarget(('192.168.1.109', 161)),
                      ContextData(),
                      ObjectType(ObjectIdentity('SNMPv2-MIB')))
    if errorIndication:
        print(errorIndication)
        break
    elif errorStatus:
        print('%s at %s' % (errorStatus.prettyPrint(),
                        errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
        break
    else:
        for varBind in varBinds:
            print(' = '.join([x.prettyPrint() for x in varBind]))enter code here

Как и ожидалось, это дает мне все переменные

SNMPv2-MIB::sysDescr.0 = Samsung C1860 Series; V4.00.02.50 APR-15-2016;Engine V1.00.30;NIC V4.02.59 14-04-2016;S/N 076FBJEF7000MMA
SNMPv2-MIB::sysObjectID.0 = SNMPv2-SMI::enterprises.236.11.5.1
SNMPv2-MIB::sysUpTime.0 = 13558600
SNMPv2-MIB::sysContact.0 = Administrator
SNMPv2-MIB::sysName.0 = SEC30CDA72E5843
SNMPv2-MIB::sysLocation.0 = 
SNMPv2-MIB::sysServices.0 = 104
SNMPv2-SMI::mib-2.2.1.0 = 4
SNMPv2-SMI::mib-2.2.2.1.1.1 = 1
SNMPv2-SMI::mib-2.2.2.1.1.2 = 2
SNMPv2-SMI::mib-2.2.2.1.2.1 = Embedded Ethernet Controller, 10/100/1000 Mbps, v1.0, UTP RJ-45, connector A1, 1000 full duplex
SNMPv2-SMI::mib-2.2.2.1.2.2 = Loopback Interface
SNMPv2-SMI::mib-2.2.2.1.3.1 = 6
SNMPv2-SMI::mib-2.2.2.1.3.2 = 24
SNMPv2-SMI::mib-2.2.2.1.4.1 = 1500
SNMPv2-SMI::mib-2.2.2.1.4.2 = 1500
..... lots more.....

Мой первый вопрос: такие объекты, как "SNMPv2-MIB :: sysObjectID" довольно понятны. Но как мне интерпретировать, что означают все эти другие переменные SMI, такие как "SNMPv2-SMI :: mib-2.2.2.1.4.2" , равный 1500?

Мой второй вопрос , если я использую тот же код и пытаюсь прочитать только одну переменную, заменив соответствующую строку на приведенную ниже, я получу хороший результат.

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

Так почему же я не могу прочитать «SMI»? "переменные аналогичным образом, используя строку кода ниже? Можно ли их читать по отдельности?

   ObjectType(ObjectIdentity('SNMPv2-SMI', 'mib-2.2.1.0', 0)))
...