summaryrefslogtreecommitdiff
path: root/examples/v1arch
diff options
context:
space:
mode:
authorelie <elie>2005-06-14 08:50:50 +0000
committerelie <elie>2005-06-14 08:50:50 +0000
commitfdf710e4a4788bee6ab761e5108ad4dba1eed421 (patch)
tree819b108b6ff8cb3a9dd7f4a489e064612919794a /examples/v1arch
parentdbfbdc9b15924897a3aea8ac5f03a98ae95b2708 (diff)
downloadpysnmp-fdf710e4a4788bee6ab761e5108ad4dba1eed421.tar.gz
omni -> api
the v1/2c model is currently broken
Diffstat (limited to 'examples/v1arch')
-rw-r--r--examples/v1arch/manager/getgen.py45
-rw-r--r--examples/v1arch/manager/nextgen.py94
-rw-r--r--examples/v1arch/manager/setgen.py51
3 files changed, 115 insertions, 75 deletions
diff --git a/examples/v1arch/manager/getgen.py b/examples/v1arch/manager/getgen.py
index 048a8c4..c6c4015 100644
--- a/examples/v1arch/manager/getgen.py
+++ b/examples/v1arch/manager/getgen.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/manager/nextgen.py b/examples/v1arch/manager/nextgen.py
index 25560b0..20be7ca 100644
--- a/examples/v1arch/manager/nextgen.py
+++ b/examples/v1arch/manager/nextgen.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/manager/setgen.py b/examples/v1arch/manager/setgen.py
index 884d86e..bc031fd 100644
--- a/examples/v1arch/manager/setgen.py
+++ b/examples/v1arch/manager/setgen.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)