summaryrefslogtreecommitdiff
path: root/examples/v1arch
diff options
context:
space:
mode:
authorelie <elie>2005-06-24 14:56:58 +0000
committerelie <elie>2005-06-24 14:56:58 +0000
commitbeb3a2f2d12a8fdc1e0308e8a9a461e6a1da6afd (patch)
tree012092425d444fd7da29a8e92ae1d582a7a0609c /examples/v1arch
parented902ca5bdeddc6203b6c28e2338ff483febd02e (diff)
downloadpysnmp-git-beb3a2f2d12a8fdc1e0308e8a9a461e6a1da6afd.tar.gz
adjusted to newer API
Diffstat (limited to 'examples/v1arch')
-rw-r--r--examples/v1arch/asyncore/manager/cmdgen/getnext-pull-whole-mib.py75
-rw-r--r--examples/v1arch/asyncore/manager/cmdgen/v2c-set.py30
2 files changed, 48 insertions, 57 deletions
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()