summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorelie <elie>2009-07-31 19:55:03 +0000
committerelie <elie>2009-07-31 19:55:03 +0000
commit35ab3f1b8534b1d99b5163e9f2ea0f9552de21f4 (patch)
treef631e241745feae906aa4c13839c0e6ce9aa7375 /examples
parent0d5efc682b4f7b6ce7775d97e3b5f38b83590d60 (diff)
downloadpysnmp-35ab3f1b8534b1d99b5163e9f2ea0f9552de21f4.tar.gz
Twisted support implemented
Diffstat (limited to 'examples')
-rw-r--r--examples/v3arch/twisted/agent/ntforg.py88
-rw-r--r--examples/v3arch/twisted/manager/bulkgen.py73
-rw-r--r--examples/v3arch/twisted/manager/getgen.py62
-rw-r--r--examples/v3arch/twisted/manager/nextgen.py73
-rw-r--r--examples/v3arch/twisted/manager/ntfrcv.py48
-rw-r--r--examples/v3arch/twisted/manager/setgen.py64
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()