2013-04-03 15 views
6

Python'da bir Cisco yönlendirme aygıtında bir SNMP değişkenini sorgulamaya çalışıyorum ve mücadele ediyorum. PySNMP'de sayısal OID sorgulama?

$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 

Şimdi pysnmp kullanarak Python aynı şeyi yapmaya çalışıyorum:

Ben çalışıyor bir snmpwalk komutu var.

burada örneklere dayanarak bir şey kullanarak çalıştı - http://pysnmp.sourceforge.net/examples/current/index.html - ama SmiError var:

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) 
...:) 

Ama şu olsun:

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 

Temelde - Ben bu equavilent istedi NetSNMP, ancak PySNMP'de (http://ben.akrin.com/?p=1234).

Herkes, PySNMP'de sayısal bir OID'yi sorgulamanın basit bir yolunu biliyor mu?

Alkış, Victor

cevap

4

aşağıdaki kodu sizin için çalışacak inanıyoruz:

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])) 

Sen & onunla denemek ve deney için istemi senin Python yapıştırmak kesebilirim.

MibVariable nesnesi, bir MIB sembolüne isme atıfta bulunmak için kullanılabilir.