2013-04-03 18 views
6

Ich versuche, eine SNMP-Variable auf einem Cisco-Routing-Gerät in Python abzufragen und zu kämpfen.Abfrage numerischer OID in PySNMP?

Ich habe einen snmpwalk Befehl, der gut funktioniert:

$snmpwalk -v2c -c <our_community_string> <device_ip_address> 1.3.6.1.4.1.9.9.42.1.2.10.1.1.950 
SNMPv2-SMI::enterprises.9.9.42.1.2.10.1.1.950 = Gauge32: 68 

Jetzt versuche ich die gleiche Sache in Python mit pysnmp zu tun.

Ich habe versucht, etwas mit auf der Grundlage der Beispiele hier - http://pysnmp.sourceforge.net/examples/current/index.html - aber eine SmiError bekam:

In [1]: from pysnmp.entity.rfc3413.oneliner import cmdgen 

In [2]: cmdGen = cmdgen.CommandGenerator() 

In [3]: errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
...:  cmdgen.CommunityData('0pe3aro'), 
...:  cmdgen.UdpTransportTarget(('10.65.113.28', 161)), 
...:  cmdgen.MibVariable('1.3.6.1.4.1.9.9.42.1.2.10.1.1.950', 0) 
...:) 

Aber ich folgendes:

SmiError: MIB file "1.3.6.1.4.1.9.9.42.1.2.10.1.1.950.py[co]" not found in search path 

Grundsätzlich - ich die equavilent dieser wollte NetSNMP, aber in PySNMP (http://ben.akrin.com/?p=1234).

Kennt jemand eine einfache Möglichkeit, eine numerische OID in PySNMP abzufragen?

Cheers, Victor

Antwort

4

Ich glaube, der folgende Code für Sie arbeiten würde:

from pysnmp.entity.rfc3413.oneliner import cmdgen 

cmdGen = cmdgen.CommandGenerator() 

errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd(
    cmdgen.CommunityData('public'), 
    cmdgen.UdpTransportTarget(('demo.snmplabs.com', 161)), 
    '1.3.6.1.2.1.1.3.0' 
) 

print('\n'.join([ '%s = %s' % varBind for varBind in varBinds])) 

Sie & es mit in Ihre Python-Prompt, um zu versuchen und experimentieren Paste schneiden könnte.

Das MibVariable-Objekt kann für den Verweis auf ein MIB-Symbol verwendet werden.

Verwandte Themen