diff options
author | elie <elie> | 2005-06-14 08:50:50 +0000 |
---|---|---|
committer | elie <elie> | 2005-06-14 08:50:50 +0000 |
commit | 076d584e91d56521654c71d66cdc85e03faa9a08 (patch) | |
tree | 561d3f900f1d9fcdbaf23230d3d9254fe6fc1cff /examples/v1arch | |
parent | 5f8c584c62c3fd43560247dd0d2cb013e889696a (diff) | |
download | pysnmp-git-076d584e91d56521654c71d66cdc85e03faa9a08.tar.gz |
omni -> api
the v1/2c model is currently broken
Diffstat (limited to 'examples/v1arch')
3 files changed, 115 insertions, 75 deletions
diff --git a/examples/v1arch/asyncore/manager/cmdgen/fetch-scalar-value.py b/examples/v1arch/asyncore/manager/cmdgen/fetch-scalar-value.py index 048a8c43..c6c40151 100644 --- a/examples/v1arch/asyncore/manager/cmdgen/fetch-scalar-value.py +++ b/examples/v1arch/asyncore/manager/cmdgen/fetch-scalar-value.py @@ -1,43 +1,52 @@ """Command Generator Application (GET)""" from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher from pysnmp.carrier.asynsock.dgram.udp import UdpSocketTransport -from pysnmp.proto import omni +from pyasn1.codec.ber import encoder, decoder +from pysnmp.proto import api from time import time # Protocol version to use -ver = omni.protoVersions[omni.protoVersionId1] - -# Build message -req = ver.Message() -req.omniSetCommunity('public') +pMod = api.protoModules[api.protoVersion1] # Build PDU -req.omniSetPdu(ver.GetRequestPdu()) -req.omniGetPdu().omniSetVarBindList( - ((1,3,6,1,2,1,1,1,0), ver.Null()), ((1,3,6,1,2,1,1,2,0), ver.Null()) +reqPDU = pMod.GetRequestPDU() +pMod.apiPDU.setDefaults(reqPDU) +pMod.apiPDU.setVarBinds( + reqPDU, (((1,3,6,1,2,1,1,1,0), pMod.Null()), + ((1,3,6,1,2,1,1,2,0), pMod.Null())) ) +# Build message +reqMsg = pMod.Message() +pMod.apiMessage.setDefaults(reqMsg) +pMod.apiMessage.setCommunity(reqMsg, 'public') +pMod.apiMessage.setPDU(reqMsg, reqPDU) + def cbTimerFun(timeNow, startedAt=time()): if timeNow - startedAt > 3: raise "Request timed out" -def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, req=req): - rsp = ver.Message() +def cbRecvFun(tspDsp, transportDomain, transportAddress, + wholeMsg, reqPDU=reqPDU): while wholeMsg: - wholeMsg = rsp.berDecode(wholeMsg) - # Make sure this is a response to this request - if req.omniMatch(rsp): - errorStatus = rsp.omniGetPdu().omniGetErrorStatus() + 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 varBind in rsp.omniGetPdu().omniGetVarBindList(): - print varBind.omniGetOidVal() + for oid, val in pMod.apiPDU.getVarBinds(rspPDU): + print oid, val tspDsp.doDispatchFlag = 0 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', ('localhost', 1161)) # 161 +dsp.sendMessage(encoder.encode(reqMsg), 'udp', ('ts29.moscow.net.rol.ru', 161)) dsp.runDispatcher(liveForever=1) 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 25560b09..20be7ca2 100644 --- a/examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py +++ b/examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py @@ -1,49 +1,57 @@ """Command Generator Application (GETNEXT)""" from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher from pysnmp.carrier.asynsock.dgram.udp import UdpSocketTransport -from pysnmp.proto import omni +from pyasn1.codec.ber import encoder, decoder +from pysnmp.proto import api from time import time # Protocol version to use -ver = omni.protoVersions[omni.protoVersionId1] +pMod = api.protoModules[api.protoVersion1] # SNMP table header -headVars = [ ver.ObjectName((1,3,6)) ] +headVars = [ pMod.ObjectIdentifier((1,3,6)) ] -# Create request & response message objects -req = ver.Message(); rsp = ver.Message() -req.omniSetCommunity('public') +# Build PDU +reqPDU = pMod.GetNextRequestPDU() +pMod.apiPDU.setDefaults(reqPDU) +pMod.apiPDU.setVarBinds( + reqPDU, map(lambda x, pMod=pMod: (x, pMod.Null()), headVars) + ) -# Create PDU, load var-binds, attach PDU to SNMP message -req.omniSetPdu(ver.GetNextRequestPdu()) -apply(req.omniGetPdu().omniSetVarBindList, - map(lambda x, ver=ver: (x.get(), ver.Null()), headVars)) +# Build message +reqMsg = pMod.Message() +pMod.apiMessage.setDefaults(reqMsg) +pMod.apiMessage.setCommunity(reqMsg, 'public') +pMod.apiMessage.setPDU(reqMsg, reqPDU) -def cbTimerFun(timeNow, startedAt=time()): +startedAt = time() + +def cbTimerFun(timeNow): if timeNow - startedAt > 3: raise "Request timed out" - + def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, - req=req, headVars=headVars): - rsp = ver.Message() + reqPDU=reqPDU, headVars=headVars): while wholeMsg: - wholeMsg = rsp.berDecode(wholeMsg) - if req.omniMatch(rsp): + 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 = rsp.omniGetPdu().omniGetErrorStatus() + errorStatus = pMod.apiPDU.getErrorStatus(rspPDU) if errorStatus and errorStatus != 2: raise errorStatus - # Build SNMP table from response - tableIndices = apply(req.omniGetPdu().omniGetTableIndices, - [rsp.omniGetPdu()] + headVars) - + tableIndices = pMod.apiPDU.getTableIndices( + reqPDU, rspPDU, headVars + ) # Report SNMP table - varBindList = rsp.omniGetPdu().omniGetVarBindList() + varBindList = pMod.apiPDU.getVarBindList(rspPDU) for rowIndices in tableIndices: for cellIdx in filter(lambda x: x!=-1, rowIndices): - print transportAddress, \ - varBindList[cellIdx].omniGetOidVal() + print transportAddress, + print pMod.apiVarBind.getOIDVal(varBindList[cellIdx]) # Remove completed SNMP table columns map(lambda idx, headVars=headVars: headVars.__delitem__(idx), \ @@ -52,20 +60,36 @@ def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, raise "EOM" # Generate request for next row - lastRow = map(lambda cellIdx, varBindList=varBindList: - varBindList[cellIdx].omniGetOidVal(), - filter(lambda x: x!=-1, tableIndices[-1])) - apply(req.omniGetPdu().omniSetVarBindList, - map(lambda (x, y): (x.get(), None), lastRow)) - - req.omniGetPdu().omniGetRequestId().inc(1) + 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.setRequestID(reqPDU, pMod.getNextRequestID()) tspDsp.sendMessage( - req.berEncode(), transportDomain, transportAddress - ) + encoder.encode(reqMsg), transportDomain, transportAddress + ) + global startedAt + if time() - startedAt > 3: + raise 'Request timed out' + startedAt = time() return wholeMsg dsp = AsynsockDispatcher(udp=UdpSocketTransport().openClientMode()) dsp.registerRecvCbFun(cbRecvFun) dsp.registerTimerCbFun(cbTimerFun) -dsp.sendMessage(req.berEncode(), 'udp', ('localhost', 1161)) # 161 -dsp.runDispatcher(liveForever=1) +#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()') diff --git a/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py b/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py index 884d86e3..bc031fd5 100644 --- a/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py +++ b/examples/v1arch/asyncore/manager/cmdgen/v2c-set.py @@ -1,46 +1,53 @@ -"""Command Generator Application (GET)""" -from time import time +"""Command Generator Application (SET)""" from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher from pysnmp.carrier.asynsock.dgram.udp import UdpSocketTransport -from pysnmp.proto import omni +from pyasn1.codec.ber import encoder, decoder +from pysnmp.proto import api +from time import time # Protocol version to use -ver = omni.protoVersions[omni.protoVersionId1] - -# Build message -req = ver.Message() -req.omniSetCommunity('public') +pMod = api.protoModules[api.protoVersion1] # Build PDU -req.omniSetPdu(ver.SetRequestPdu()) -req.omniGetPdu().omniSetVarBindList( +reqPDU = pMod.SetRequestPDU() +pMod.apiPDU.setDefaults(reqPDU) +pMod.apiPDU.setVarBinds( + reqPDU, # A list of Var-Binds to SET - ((1,3,6,1,2,1,1,1,0), ver.Integer(123456)), - ((1,3,6,1,2,1,1,1,0), ver.IpAddress('127.0.0.1')) + (((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'))) ) +# Build message +reqMsg = pMod.Message() +pMod.apiMessage.setDefaults(reqMsg) +pMod.apiMessage.setCommunity(reqMsg, 'public') +pMod.apiMessage.setPDU(reqMsg, reqPDU) + def cbTimerFun(timeNow, startedAt=time()): if timeNow - startedAt > 3: raise "Request timed out" -def cbRecvFun(tspDsp, transportDomain, transportAddress, wholeMsg, req=req): - rsp = ver.Message() +def cbRecvFun(tspDsp, transportDomain, transportAddress, + wholeMsg, reqPDU=reqPDU): while wholeMsg: - wholeMsg = rsp.berDecode(wholeMsg) - - # Make sure this is a response to this request - if req.omniMatch(rsp): - errorStatus = rsp.omniGetPdu().omniGetErrorStatus() + 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): + errorStatus = pMod.apiPDU.getErrorStatus(rspPDU) if errorStatus: print 'Error: ', errorStatus else: - for varBind in rsp.omniGetPdu().omniGetVarBindList(): - print varBind.omniGetOidVal() + for oid, val in pMod.apiPDU.getVarBinds(rspPDU): + print oid, val tspDsp.doDispatchFlag = 0 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', ('localhost', 1161)) # 161 +dsp.sendMessage(encoder.encode(reqMsg), 'udp', ('ts29.moscow.net.rol.ru', 161)) # 161 dsp.runDispatcher(liveForever=1) |