From beb3a2f2d12a8fdc1e0308e8a9a461e6a1da6afd Mon Sep 17 00:00:00 2001 From: elie Date: Fri, 24 Jun 2005 14:56:58 +0000 Subject: adjusted to newer API --- .../manager/cmdgen/getnext-pull-whole-mib.py | 75 +++++++++------------- examples/v1arch/asyncore/manager/cmdgen/v2c-set.py | 30 +++++---- 2 files changed, 48 insertions(+), 57 deletions(-) (limited to 'examples/v1arch') diff --git a/examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py b/examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py index 20be7ca2..846ee402 100644 --- a/examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py +++ b/examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py @@ -1,6 +1,6 @@ """Command Generator Application (GETNEXT)""" from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher -from pysnmp.carrier.asynsock.dgram.udp import UdpSocketTransport +from pysnmp.carrier.asynsock.dgram import udp from pyasn1.codec.ber import encoder, decoder from pysnmp.proto import api from time import time @@ -30,11 +30,10 @@ def cbTimerFun(timeNow): if timeNow - startedAt > 3: raise "Request timed out" -def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, - reqPDU=reqPDU, headVars=headVars): +def cbRecvFun(transportDispatcher, transportDomain, transportAddress, + wholeMsg, reqPDU=reqPDU, headVars=headVars): while wholeMsg: rspMsg, wholeMsg = decoder.decode(wholeMsg, asn1Spec=pMod.Message()) -# print rspMsg.prettyPrinter() rspPDU = pMod.apiMessage.getPDU(rspMsg) # Match response to request if pMod.apiPDU.getRequestID(reqPDU)==pMod.apiPDU.getRequestID(rspPDU): @@ -42,33 +41,27 @@ def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, errorStatus = pMod.apiPDU.getErrorStatus(rspPDU) if errorStatus and errorStatus != 2: raise errorStatus - # Build SNMP table from response - tableIndices = pMod.apiPDU.getTableIndices( - reqPDU, rspPDU, headVars - ) + # Format var-binds table + varBindTable = pMod.apiPDU.getVarBindTable(reqPDU, rspPDU) # Report SNMP table - varBindList = pMod.apiPDU.getVarBindList(rspPDU) - for rowIndices in tableIndices: - for cellIdx in filter(lambda x: x!=-1, rowIndices): - print transportAddress, - print pMod.apiVarBind.getOIDVal(varBindList[cellIdx]) - - # Remove completed SNMP table columns - map(lambda idx, headVars=headVars: headVars.__delitem__(idx), \ - filter(lambda x: x==-1, tableIndices[-1])) - if not headVars: - raise "EOM" - + for tableRow in varBindTable: + for name, val in tableRow: + print 'from: %s, %s = %s' % ( + transportAddress, name, val + ) + # Stop on EOM + for oid, val in varBindTable[-1]: + if val is not None: + break + else: + transportDispatcher.stopDispatcher() + # Generate request for next row - lastRow = [] - for cellIdx in filter(lambda x: x!=-1, tableIndices[-1]): - lastRow.append( - (pMod.apiVarBind.getOIDVal(varBindList[cellIdx])[0], - pMod.Null()) - ) - pMod.apiPDU.setVarBinds(reqPDU, lastRow) + pMod.apiPDU.setVarBinds( + reqPDU, map(lambda (x,y),n=pMod.Null(): (x,n), varBindTable[-1]) + ) pMod.apiPDU.setRequestID(reqPDU, pMod.getNextRequestID()) - tspDsp.sendMessage( + transportDispatcher.sendMessage( encoder.encode(reqMsg), transportDomain, transportAddress ) global startedAt @@ -77,19 +70,13 @@ def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, startedAt = time() return wholeMsg -dsp = AsynsockDispatcher(udp=UdpSocketTransport().openClientMode()) -dsp.registerRecvCbFun(cbRecvFun) -dsp.registerTimerCbFun(cbTimerFun) -#dsp.sendMessage(req.berEncode(), 'udp', ('localhost', 1161)) # 161 -dsp.sendMessage(encoder.encode(reqMsg), 'udp', ('ts29.moscow.net.rol.ru', 161)) - -try: - msgAndPduDsp.transportDispatcher.runDispatcher() -except "EOM": - pass - -#def f(): -# dsp.runDispatcher(liveForever=1) -#f() -#import profile -#profile.run('f()') +transportDispatcher = AsynsockDispatcher() +transportDispatcher.registerTransport( + udp.domainName, udp.UdpSocketTransport().openClientMode() + ) +transportDispatcher.registerRecvCbFun(cbRecvFun) +transportDispatcher.registerTimerCbFun(cbTimerFun) +transportDispatcher.sendMessage( + encoder.encode(reqMsg), udp.domainName, ('localhost', 161) + ) +transportDispatcher.runDispatcher() diff --git a/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py b/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py index bc031fd5..bbc95063 100644 --- a/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py +++ b/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py @@ -1,6 +1,6 @@ -"""Command Generator Application (SET)""" +"""Command Generator Application (GET)""" from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher -from pysnmp.carrier.asynsock.dgram.udp import UdpSocketTransport +from pysnmp.carrier.asynsock.dgram import udp from pyasn1.codec.ber import encoder, decoder from pysnmp.proto import api from time import time @@ -9,13 +9,13 @@ from time import time pMod = api.protoModules[api.protoVersion1] # Build PDU -reqPDU = pMod.SetRequestPDU() +reqPDU = pMod.GetRequestPDU() pMod.apiPDU.setDefaults(reqPDU) pMod.apiPDU.setVarBinds( reqPDU, # A list of Var-Binds to SET (((1,3,6,1,2,1,1,1,0), pMod.Integer(123456)), - ((1,3,6,1,2,1,1,2,0), pMod.IPAddress('127.0.0.1'))) + ((1,3,6,1,2,1,1,2,0), pMod.IpAddress('127.0.0.1'))) ) # Build message @@ -28,26 +28,30 @@ def cbTimerFun(timeNow, startedAt=time()): if timeNow - startedAt > 3: raise "Request timed out" -def cbRecvFun(tspDsp, transportDomain, transportAddress, +def cbRecvFun(transportDispatcher, transportDomain, transportAddress, wholeMsg, reqPDU=reqPDU): while wholeMsg: rspMsg, wholeMsg = decoder.decode(wholeMsg, asn1Spec=pMod.Message()) - print rspMsg.prettyPrinter() rspPDU = pMod.apiMessage.getPDU(rspMsg) # Match response to request if pMod.apiPDU.getRequestID(reqPDU)==pMod.apiPDU.getRequestID(rspPDU): + # Check for SNMP errors reported errorStatus = pMod.apiPDU.getErrorStatus(rspPDU) if errorStatus: print 'Error: ', errorStatus else: for oid, val in pMod.apiPDU.getVarBinds(rspPDU): print oid, val - tspDsp.doDispatchFlag = 0 + transportDispatcher.stopDispatcher() return wholeMsg -dsp = AsynsockDispatcher(udp=UdpSocketTransport().openClientMode()) -dsp.registerRecvCbFun(cbRecvFun) -dsp.registerTimerCbFun(cbTimerFun) -#dsp.sendMessage(encoder.encode(reqMsg), 'udp', ('localhost', 1161)) # 161 -dsp.sendMessage(encoder.encode(reqMsg), 'udp', ('ts29.moscow.net.rol.ru', 161)) # 161 -dsp.runDispatcher(liveForever=1) +transportDispatcher = AsynsockDispatcher() +transportDispatcher.registerTransport( + udp.domainName, udp.UdpSocketTransport().openClientMode() + ) +transportDispatcher.registerRecvCbFun(cbRecvFun) +transportDispatcher.registerTimerCbFun(cbTimerFun) +transportDispatcher.sendMessage( + encoder.encode(reqMsg), udp.domainName, ('localhost', 161) + ) +transportDispatcher.runDispatcher() -- cgit v1.2.1