Sie scheinen das Modul netsnmp
im Gegensatz zu pysnmp
zu verwenden.
from pysnmp.hlapi import *
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in nextCmd(SnmpEngine(),
CommunityData('public', mpModel=0),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
ObjectType(ObjectIdentity('1.3.6.1.2.1.17.7.1.2.2.1.2'))):
if errorIndication or errorStatus:
print(errorIndication or errorStatus)
break
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
UPDATE:
Die obige Schleife pro Iteration OID-Wert holen ein
Wenn Sie pysnmp
verwenden möchten, dann können this example helfen. Wenn Sie Daten effizienter abrufen möchten, besteht eine Möglichkeit darin, mehr OIDs in die Abfrage einzufügen (in Form vieler Parameter ObjectType(...)
).
Oder Sie können auf den GETBULK PDU-Typ wechseln, indem Sie Ihren nextCmd
Anruf in bulkCmd
like this ändern.
from pysnmp.hlapi import *
for (errorIndication,
errorStatus,
errorIndex,
varBinds) in bulkCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(),
0, 25, # fetch up to 25 OIDs one-shot
ObjectType(ObjectIdentity('1.3.6.1.2.1.17.7.1.2.2.1.2'))):
if errorIndication or errorStatus:
print(errorIndication or errorStatus)
break
else:
for varBind in varBinds:
print(' = '.join([x.prettyPrint() for x in varBind]))
Beachten Sie, dass GETBULK Führungsunterstützung zunächst in SNMP v2c eingeführt wurde, dh Sie es nicht über SNMP v1 verwenden können.
Vielen Dank für Ihre Antwort. Ich habe Ihr Snippet ausprobiert, aber alle Daten wurden nicht abgerufen. Irgendeine Idee, warum so? – kit
@IIya Etingof- Wie können wir mehr als einen sagen 10 OID-Daten zu einem Zeitpunkt? – kit
@kit Meine Antwort wurde aktualisiert, lassen Sie mich wissen, wenn dies das ist, was Sie brauchen –