Common notifications
********************


SNMPv1 TRAP with defaults
=========================

Send SNMPv1 TRAP through unified SNMPv3 message processing framework
using the following options:

* SNMPv1

* with community name 'public'

* over IPv4/UDP

* send TRAP notification

* with Generic Trap #1 (warmStart) and Specific Trap 0

* with default Uptime

* with default Agent Address

* with Enterprise OID 1.3.6.1.4.1.20408.4.1.1.2

* include managed object information '1.3.6.1.2.1.1.1.0' = 'my
  system'

Functionally similar to:

   $ snmptrap -v1 -c public demo.snmplabs.com 1.3.6.1.4.1.20408.4.1.1.2 0.0.0.0 1 0 0 1.3.6.1.2.1.1.1.0 s "my system"

   from twisted.internet.task import react
   from pysnmp.hlapi.twisted import *


   def success(args, hostname):
       (errorStatus, errorIndex, varBinds) = args

       if errorStatus:
           print('%s: %s at %s' % (
               hostname,
               errorStatus.prettyPrint(),
               errorIndex and varBinds[int(errorIndex) - 1][0] or '?'
           )
                 )
       else:
           for varBind in varBinds:
               print(' = '.join([x.prettyPrint() for x in varBind]))


   def failure(errorIndication, hostname):
       print('%s failure: %s' % (hostname, errorIndication))


   # noinspection PyUnusedLocal
   def run(reactor, hostname):
       d = sendNotification(
           SnmpEngine(),
           CommunityData('public', mpModel=0),
           UdpTransportTarget((hostname, 162)),
           ContextData(),
           'trap',
           NotificationType(
               ObjectIdentity('1.3.6.1.6.3.1.1.5.2')
           ).addVarBinds(
               ('1.3.6.1.6.3.1.1.4.3.0', '1.3.6.1.4.1.20408.4.1.1.2'),
               ('1.3.6.1.2.1.1.1.0', OctetString('my system'))
           )
       )
       d.addCallback(success, hostname).addErrback(failure, hostname)
       return d


   react(run, ['demo.snmplabs.com'])

"Download" script.


SNMPv2c TRAP via Twisted inline callbacks
=========================================

Send SNMPv2c TRAP through unified SNMPv3 message processing framework
using the following options:

* SNMPv2c

* with community name 'public'

* over IPv4/UDP

* send TRAP notification

* with Generic Trap #1 (warmStart) and Specific Trap 0

* include managed object information '1.3.6.1.2.1.1.1.0' = 'my
  system'

Functionally similar to:

   $ snmptrap -v2c -c public demo.snmplabs.com 12345 1.3.6.1.6.3.1.1.5.2 1.3.6.1.2.1.1.1.0 s "Hello from Twisted"

   from twisted.internet.task import react, defer
   from pysnmp.hlapi.twisted import *


   @defer.inlineCallbacks
   def sendtrap(reactor, snmpEngine, hostname):

       yield sendNotification(
           snmpEngine,
           CommunityData('public', mpModel=0),
           UdpTransportTarget((hostname, 162)),
           ContextData(),
           'trap',
           NotificationType(
               ObjectIdentity('1.3.6.1.6.3.1.1.5.2')
           ).addVarBinds(
               ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'), OctetString('Hello from Twisted'))
           )
       )

   # Preserve SnmpEngine instance across [potentially] multiple calls to safe on initialization
   snmpEngine = SnmpEngine()

   react(sendtrap, [snmpEngine, 'demo.snmplabs.com'])


"Download" script.

See also: library reference.
