Я новичок и просто пытаюсь понять основы. Я настроил 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)))