diff options
author | elie <elie> | 2005-10-09 19:08:32 +0000 |
---|---|---|
committer | elie <elie> | 2005-10-09 19:08:32 +0000 |
commit | 59f991280491cee7c7fb9025c66a5f648c0c3962 (patch) | |
tree | 8844a31ef2c68ab6eee5bba6742b7af95c4aeef6 /examples/v1arch | |
parent | 6915c1db11826ee9be116cf83fa1e2e97c6576ec (diff) | |
download | pysnmp-59f991280491cee7c7fb9025c66a5f648c0c3962.tar.gz |
trap* example names renamed into ntf* for clarity
Diffstat (limited to 'examples/v1arch')
-rw-r--r-- | examples/v1arch/agent/ntforg.py | 35 | ||||
-rw-r--r-- | examples/v1arch/manager/ntfrcv.py | 50 |
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() |