summaryrefslogtreecommitdiff
path: root/examples/v1arch
diff options
context:
space:
mode:
authorelie <elie>2005-10-09 19:08:32 +0000
committerelie <elie>2005-10-09 19:08:32 +0000
commit59f991280491cee7c7fb9025c66a5f648c0c3962 (patch)
tree8844a31ef2c68ab6eee5bba6742b7af95c4aeef6 /examples/v1arch
parent6915c1db11826ee9be116cf83fa1e2e97c6576ec (diff)
downloadpysnmp-59f991280491cee7c7fb9025c66a5f648c0c3962.tar.gz
trap* example names renamed into ntf* for clarity
Diffstat (limited to 'examples/v1arch')
-rw-r--r--examples/v1arch/agent/ntforg.py35
-rw-r--r--examples/v1arch/manager/ntfrcv.py50
2 files changed, 85 insertions, 0 deletions
diff --git a/examples/v1arch/agent/ntforg.py b/examples/v1arch/agent/ntforg.py
new file mode 100644
index 0000000..e1084f6
--- /dev/null
+++ b/examples/v1arch/agent/ntforg.py
@@ -0,0 +1,35 @@
+"""Notification Originator Application (TRAP)"""
+from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher
+from pysnmp.carrier.asynsock.dgram import udp
+from pyasn1.codec.ber import encoder
+from pysnmp.proto import api
+
+# Protocol version to use
+verID = api.protoVersion1
+pMod = api.protoModules[verID]
+
+# Build PDU
+trapPDU = pMod.TrapPDU()
+pMod.apiTrapPDU.setDefaults(trapPDU)
+
+# Traps have quite different semantics among proto versions
+if verID == api.protoVersion1:
+ pMod.apiTrapPDU.setEnterprise(trapPDU, (1,3,6,1,1,2,3,4,1))
+ pMod.apiTrapPDU.setGenericTrap(trapPDU, 'coldStart')
+
+# Build message
+trapMsg = pMod.Message()
+pMod.apiMessage.setDefaults(trapMsg)
+pMod.apiMessage.setCommunity(trapMsg, 'public')
+pMod.apiMessage.setPDU(trapMsg, trapPDU)
+
+transportDispatcher = AsynsockDispatcher()
+transportDispatcher.registerTransport(
+ udp.domainName, udp.UdpSocketTransport().openClientMode()
+ )
+transportDispatcher.sendMessage(
+ encoder.encode(trapMsg), udp.domainName, ('localhost', 162)
+ )
+transportDispatcher.stopDispatcher() # XXX run only once
+transportDispatcher.runDispatcher()
+transportDispatcher.closeDispatcher()
diff --git a/examples/v1arch/manager/ntfrcv.py b/examples/v1arch/manager/ntfrcv.py
new file mode 100644
index 0000000..e225521
--- /dev/null
+++ b/examples/v1arch/manager/ntfrcv.py
@@ -0,0 +1,50 @@
+"""Notification Receiver Application (TRAP PDU)"""
+from pysnmp.carrier.asynsock.dispatch import AsynsockDispatcher
+from pysnmp.carrier.asynsock.dgram import udp
+from pyasn1.codec.ber import decoder
+from pysnmp.proto import api
+
+def cbFun(transportDispatcher, transportDomain, transportAddress, wholeMsg):
+ while wholeMsg:
+ msgVer = int(api.decodeMessageVersion(wholeMsg))
+ pMod = api.protoModules[msgVer]
+ reqMsg, wholeMsg = decoder.decode(
+ wholeMsg, asn1Spec=pMod.Message(),
+ )
+ print 'Notification message from %s:%s: ' % (
+ transportDomain, transportAddress
+ )
+ reqPDU = pMod.apiMessage.getPDU(reqMsg)
+ if reqPDU.isSameTypeWith(pMod.TrapPDU()):
+ if msgVer == api.protoVersion1:
+ print 'Enterprise: %s' % (
+ pMod.apiTrapPDU.getEnterprise(reqPDU)
+ )
+ print 'Agent Address: %s' % (
+ repr(pMod.apiTrapPDU.getAgentAddr(reqPDU))
+ )
+ print 'Generic Trap: %s' % (
+ pMod.apiTrapPDU.getGenericTrap(reqPDU)
+ )
+ print 'Specific Trap: %s' % (
+ pMod.apiTrapPDU.getSpecificTrap(reqPDU)
+ )
+ print 'Uptime: %s' % (
+ pMod.apiTrapPDU.getTimeStamp(reqPDU)
+ )
+ print 'Var-binds:'
+ for varBind in pMod.apiTrapPDU.getVarBindList(reqPDU):
+ print pMod.apiVarBind.getOIDVal(varBind)
+ else:
+ print 'Var-binds:'
+ for varBind in pMod.apiPDU.getVarBindList(reqPDU):
+ print pMod.apiVarBind.getOIDVal(varBind)
+ return wholeMsg
+
+transportDispatcher = AsynsockDispatcher()
+transportDispatcher.registerTransport(
+ udp.domainName, udp.UdpSocketTransport().openServerMode(('localhost', 1162))
+ )
+transportDispatcher.registerRecvCbFun(cbFun)
+transportDispatcher.jobStarted(1) # this job would never finish
+transportDispatcher.runDispatcher()