diff options
author | elie <elie> | 2009-07-31 19:55:03 +0000 |
---|---|---|
committer | elie <elie> | 2009-07-31 19:55:03 +0000 |
commit | 35ab3f1b8534b1d99b5163e9f2ea0f9552de21f4 (patch) | |
tree | f631e241745feae906aa4c13839c0e6ce9aa7375 /examples | |
parent | 0d5efc682b4f7b6ce7775d97e3b5f38b83590d60 (diff) | |
download | pysnmp-35ab3f1b8534b1d99b5163e9f2ea0f9552de21f4.tar.gz |
Twisted support implemented
Diffstat (limited to 'examples')
-rw-r--r-- | examples/v3arch/twisted/agent/ntforg.py | 88 | ||||
-rw-r--r-- | examples/v3arch/twisted/manager/bulkgen.py | 73 | ||||
-rw-r--r-- | examples/v3arch/twisted/manager/getgen.py | 62 | ||||
-rw-r--r-- | examples/v3arch/twisted/manager/nextgen.py | 73 | ||||
-rw-r--r-- | examples/v3arch/twisted/manager/ntfrcv.py | 48 | ||||
-rw-r--r-- | examples/v3arch/twisted/manager/setgen.py | 64 |
6 files changed, 408 insertions, 0 deletions
diff --git a/examples/v3arch/twisted/agent/ntforg.py b/examples/v3arch/twisted/agent/ntforg.py new file mode 100644 index 0000000..77df949 --- /dev/null +++ b/examples/v3arch/twisted/agent/ntforg.py @@ -0,0 +1,88 @@ +# Notification originator +from twisted.internet import reactor +from pysnmp.entity import engine, config +from pysnmp.carrier.twisted import dispatch +from pysnmp.carrier.twisted.dgram import udp +from pysnmp.entity.rfc3413 import context +from pysnmp.entity.rfc3413.twisted import ntforg +from pysnmp.proto.api import v2c + +# Send either Teap or Inform request +doInform = 1 + +snmpEngine = engine.SnmpEngine() + +# Set Twisted dispatcher +snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher()) + +# v1/2 setup +config.addV1System(snmpEngine, 'test-agent', 'public') + +# v3 setup +config.addV3User( + snmpEngine, 'test-user', + config.usmHMACMD5AuthProtocol, 'authkey1', + config.usmDESPrivProtocol, 'privkey1' + ) + +# Transport params +config.addTargetParams(snmpEngine, 'myParams', 'test-user', 'authPriv') +#config.addTargetParams(snmpEngine, 'myParams', 'test-agent', 'noAuthNoPriv', 1) + +# Transport addresses +config.addTargetAddr( + snmpEngine, 'myNMS', config.snmpUDPDomain, + ('127.0.0.1', 162), 'myParams', tagList='myManagementStations' + ) + +# Notification targets +if doInform: + config.addNotificationTarget( + snmpEngine, 'myNotifyName', 'myParams','myManagementStations','inform' + ) +else: + config.addNotificationTarget( + snmpEngine, 'myNotifyName', 'myParams', 'myManagementStations', 'trap' + ) + +# Transport +config.addSocketTransport( + snmpEngine, + udp.domainName, + udp.UdpTwistedTransport().openClientMode() + ) + +# Agent-side VACM setup +config.addContext(snmpEngine, '') +config.addVacmUser(snmpEngine, 1, 'test-agent', 'noAuthNoPriv', + (), (), (1,3,6)) # v1 +config.addVacmUser(snmpEngine, 2, 'test-agent', 'noAuthNoPriv', + (), (), (1,3,6)) # v2c +config.addVacmUser(snmpEngine, 3, 'test-user', 'authPriv', + (), (), (1,3,6)) # v3 + +# SNMP context +snmpContext = context.SnmpContext(snmpEngine) + +# Twisted API follows + +def receiveResponse((sendRequestHandle, errorIndication)): + if errorIndication: + print 'Error: ', errorIndication + reactor.stop() + +ntfOrg = ntforg.NotificationOriginator(snmpContext) + +df = ntfOrg.sendNotification( + snmpEngine, + # Notification targets + 'myNotifyName', + # Trap OID (SNMPv2-MIB::coldStart) + (1,3,6,1,6,3,1,1,5,1), + # ((oid, value), ... ) + (((1,3,6,1,2,1,1,5), v2c.OctetString('Example Notificator')),) + ) + +if doInform: + df.addCallback(receiveResponse) + reactor.run() diff --git a/examples/v3arch/twisted/manager/bulkgen.py b/examples/v3arch/twisted/manager/bulkgen.py new file mode 100644 index 0000000..96201ac --- /dev/null +++ b/examples/v3arch/twisted/manager/bulkgen.py @@ -0,0 +1,73 @@ +# BULK Command Generator +from twisted.internet import reactor, defer +from pysnmp.entity import engine, config +from pysnmp.carrier.twisted import dispatch +from pysnmp.carrier.twisted.dgram import udp +from pysnmp.entity.rfc3413.twisted import cmdgen + +snmpEngine = engine.SnmpEngine() + +# Set Twisted dispatcher +snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher()) + +# v1/2 setup +config.addV1System(snmpEngine, 'test-agent', 'public') + +# v3 setup +config.addV3User( + snmpEngine, 'test-user', + config.usmHMACMD5AuthProtocol, 'authkey1', + config.usmDESPrivProtocol, 'privkey1' + ) + +# Transport params +config.addTargetParams(snmpEngine, 'myParams', 'test-user', 'authPriv') +#config.addTargetParams(snmpEngine, 'myParams', 'test-agent', 'noAuthNoPriv', 1) + +# Transport addresses +config.addTargetAddr( + snmpEngine, 'myRouter', config.snmpUDPDomain, + ('127.0.0.1', 161), 'myParams' + ) + +# Transport +config.addSocketTransport( + snmpEngine, + udp.domainName, + udp.UdpTwistedTransport().openClientMode() + ) + +# Twisted API follows + +def receiveResponse( + (errorIndication, errorStatus, errorIndex, varBindTable), + bulkCmdGen, snmpEngine): + if errorIndication or errorStatus: + print 'Error: ', errorIndication, errorStatus.prettyPrint(), errorIndex + reactor.stop() + return + for varBindRow in varBindTable: + for oid, val in varBindRow: + if val is None: + print oid.prettyPrint() + else: + print '%s = %s' % (oid.prettyPrint(), val.prettyPrint()) + for oid, val in varBindTable[-1]: + if val is not None: + df = bulkCmdGen.sendReq( + snmpEngine, 'myRouter', 0, 25, varBindTable[-1] + ) + df.addCallback(receiveResponse, bulkCmdGen, snmpEngine) + return + else: + reactor.stop() + +bulkCmdGen = cmdgen.BulkCommandGenerator() + +df = bulkCmdGen.sendReq( + snmpEngine, 'myRouter', 0, 25, (((1,3,6,1,2), None),) + ) + +df.addCallback(receiveResponse, bulkCmdGen, snmpEngine) + +reactor.run() diff --git a/examples/v3arch/twisted/manager/getgen.py b/examples/v3arch/twisted/manager/getgen.py new file mode 100644 index 0000000..a2cb9a4 --- /dev/null +++ b/examples/v3arch/twisted/manager/getgen.py @@ -0,0 +1,62 @@ +# GET Command Generator +from twisted.internet import reactor, defer +from pysnmp.entity import engine, config +from pysnmp.carrier.twisted import dispatch +from pysnmp.carrier.twisted.dgram import udp +from pysnmp.entity.rfc3413.twisted import cmdgen + +snmpEngine = engine.SnmpEngine() + +# Set Twisted dispatcher +snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher()) + +# v1/2 setup +config.addV1System(snmpEngine, 'test-agent', 'public') + +# v3 setup +config.addV3User( + snmpEngine, 'test-user', + config.usmHMACMD5AuthProtocol, 'authkey1', + config.usmDESPrivProtocol, 'privkey1' + ) + +# Transport params +config.addTargetParams(snmpEngine, 'myParams', 'test-user', 'authPriv') +#config.addTargetParams(snmpEngine, 'myParams', 'test-agent', 'noAuthNoPriv', 1) + +# Transport addresses +config.addTargetAddr( + snmpEngine, 'myRouter', config.snmpUDPDomain, + ('127.0.0.1', 161), 'myParams' + ) + +# Transport +config.addSocketTransport( + snmpEngine, + udp.domainName, + udp.UdpTwistedTransport().openClientMode() + ) + +# Twisted API follows + +def receiveResponse((errorIndication, errorStatus, errorIndex, varBinds)): + if errorIndication or errorStatus: + print 'Error: ', errorIndication, errorStatus.prettyPrint(), errorIndex + reactor.stop() + return + for oid, val in varBinds: + if val is None: + print oid.prettyPrint() + else: + print '%s = %s' % (oid.prettyPrint(), val.prettyPrint()) + reactor.stop() + +getCmdGen = cmdgen.GetCommandGenerator() + +df = getCmdGen.sendReq( + snmpEngine, 'myRouter', (((1,3,6,1,2,1,1,1,0), None),) + ) + +df.addCallback(receiveResponse) + +reactor.run() diff --git a/examples/v3arch/twisted/manager/nextgen.py b/examples/v3arch/twisted/manager/nextgen.py new file mode 100644 index 0000000..8fdc3a8 --- /dev/null +++ b/examples/v3arch/twisted/manager/nextgen.py @@ -0,0 +1,73 @@ +# GETNEXT Command Generator +from twisted.internet import reactor, defer +from pysnmp.entity import engine, config +from pysnmp.carrier.twisted import dispatch +from pysnmp.carrier.twisted.dgram import udp +from pysnmp.entity.rfc3413.twisted import cmdgen + +snmpEngine = engine.SnmpEngine() + +# Set Twisted dispatcher +snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher()) + +# v1/2 setup +config.addV1System(snmpEngine, 'test-agent', 'public') + +# v3 setup +config.addV3User( + snmpEngine, 'test-user', + config.usmHMACMD5AuthProtocol, 'authkey1', + config.usmDESPrivProtocol, 'privkey1' + ) + +# Transport params +config.addTargetParams(snmpEngine, 'myParams', 'test-user', 'authPriv') +#config.addTargetParams(snmpEngine, 'myParams', 'test-agent', 'noAuthNoPriv', 1) + +# Transport addresses +config.addTargetAddr( + snmpEngine, 'myRouter', config.snmpUDPDomain, + ('127.0.0.1', 161), 'myParams' + ) + +# Transport +config.addSocketTransport( + snmpEngine, + udp.domainName, + udp.UdpTwistedTransport().openClientMode() + ) + +# Twisted API follows + +def receiveResponse( + (errorIndication, errorStatus, errorIndex, varBindTable), + nextCmdGen, snmpEngine): + if errorIndication or errorStatus: + print 'Error: ', errorIndication, errorStatus.prettyPrint(), errorIndex + reactor.stop() + return + for varBindRow in varBindTable: + for oid, val in varBindRow: + if val is None: + print oid.prettyPrint() + else: + print '%s = %s' % (oid.prettyPrint(), val.prettyPrint()) + for oid, val in varBindTable[-1]: + if val is not None: + df = nextCmdGen.sendReq( + snmpEngine, 'myRouter', varBindTable[-1] + ) + df.addCallback(receiveResponse, nextCmdGen, snmpEngine) + return + else: + reactor.stop() + +nextCmdGen = cmdgen.NextCommandGenerator() + +df = nextCmdGen.sendReq( + snmpEngine, 'myRouter', (((1,3,6,1,2,1,1), None),) + ) + +df.addCallback(receiveResponse, nextCmdGen, snmpEngine) + +reactor.run() diff --git a/examples/v3arch/twisted/manager/ntfrcv.py b/examples/v3arch/twisted/manager/ntfrcv.py new file mode 100644 index 0000000..61bb5ca --- /dev/null +++ b/examples/v3arch/twisted/manager/ntfrcv.py @@ -0,0 +1,48 @@ +# Notification Receiver (TRAP/INFORM) +from twisted.internet import reactor +from pysnmp.entity import engine, config +from pysnmp.carrier.twisted import dispatch +from pysnmp.carrier.twisted.dgram import udp +from pysnmp.entity.rfc3413 import ntfrcv + +# Create SNMP engine with autogenernated engineID and pre-bound +# to socket transport dispatcher +snmpEngine = engine.SnmpEngine() + +# Set Twisted dispatcher +snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher()) + +# v1/2 setup +config.addV1System(snmpEngine, 'test-agent', 'public') + +# v3 setup +config.addV3User( + snmpEngine, 'test-user', + config.usmHMACMD5AuthProtocol, 'authkey1', + config.usmDESPrivProtocol, 'privkey1' + ) + +# Transport +config.addSocketTransport( + snmpEngine, + udp.domainName, + udp.UdpTwistedTransport().openServerMode(('127.0.0.1', 1162)) + ) + +# Callback function for receiving notifications +def cbFun(snmpEngine, + stateReference, + contextEngineId, contextName, + varBinds, + cbCtx): + transportDomain, transportAddress = snmpEngine.msgAndPduDsp.getTransportInfo(stateReference) + print 'Notification from %s, SNMP Engine \"%s\", Context \"%s\"' % ( + transportAddress, contextEngineId, contextName + ) + for name, val in varBinds: + print '%s = %s' % (name.prettyPrint(), val.prettyPrint()) + +# Apps registration +ntfrcv.NotificationReceiver(snmpEngine, cbFun) + +reactor.run() diff --git a/examples/v3arch/twisted/manager/setgen.py b/examples/v3arch/twisted/manager/setgen.py new file mode 100644 index 0000000..4bdac57 --- /dev/null +++ b/examples/v3arch/twisted/manager/setgen.py @@ -0,0 +1,64 @@ +# SET Command Generator +from twisted.internet import reactor, defer +from pysnmp.entity import engine, config +from pysnmp.carrier.twisted import dispatch +from pysnmp.carrier.twisted.dgram import udp +from pysnmp.entity.rfc3413.twisted import cmdgen +from pysnmp.proto import rfc1902 + +snmpEngine = engine.SnmpEngine() + +# Set Twisted dispatcher +snmpEngine.registerTransportDispatcher(dispatch.TwistedDispatcher()) + +# v1/2 setup +config.addV1System(snmpEngine, 'test-agent', 'public') + +# v3 setup +config.addV3User( + snmpEngine, 'test-user', + config.usmHMACMD5AuthProtocol, 'authkey1', + config.usmDESPrivProtocol, 'privkey1' + ) + +# Transport params +config.addTargetParams(snmpEngine, 'myParams', 'test-user', 'authPriv') +#config.addTargetParams(snmpEngine, 'myParams', 'test-agent', 'noAuthNoPriv', 1) + +# Transport addresses +config.addTargetAddr( + snmpEngine, 'myRouter', config.snmpUDPDomain, + ('127.0.0.1', 161), 'myParams' + ) + +# Transport +config.addSocketTransport( + snmpEngine, + udp.domainName, + udp.UdpTwistedTransport().openClientMode() + ) + +# Twisted API follows + +def receiveResponse((errorIndication, errorStatus, errorIndex, varBinds)): + if errorIndication or errorStatus: + print 'Error: ', errorIndication, errorStatus.prettyPrint(), errorIndex + reactor.stop() + return + for oid, val in varBinds: + if val is None: + print oid.prettyPrint() + else: + print '%s = %s' % (oid.prettyPrint(), val.prettyPrint()) + reactor.stop() + +getCmdGen = cmdgen.SetCommandGenerator() + +df = getCmdGen.sendReq( + snmpEngine, 'myRouter', + (((1,3,6,1,2,1,1,1,0), rfc1902.OctetString('Grinch')),) + ) + +df.addCallback(receiveResponse) + +reactor.run() |