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


SNMPv2c TRAP via NOTIFICATION-TYPE
==================================

Initialize TRAP message contents from variables specified in
*NOTIFICATION-TYPE* SMI macro.

* SNMPv2c

* with community name 'public'

* over IPv4/UDP

* send TRAP notification

* with TRAP ID 'linkUp' specified as a MIB symbol

* include values for managed objects implicitly added to notification
  (via NOTIFICATION-TYPE->OBJECTS)

Functionally similar to:

   $ snmptrap -v2c -c public demo.snmplabs.com 0 1.3.6.1.6.3.1.1.5.1 1.3.6.1.2.1.2.2.1.1.123 i 123 1.3.6.1.2.1.2.2.1.7.123 i 1 1.3.6.1.2.1.2.2.1.8.123 i 1

   from pysnmp.hlapi import *

   errorIndication, errorStatus, errorIndex, varBinds = next(
       sendNotification(
           SnmpEngine(),
           CommunityData('public'),
           UdpTransportTarget(('demo.snmplabs.com', 162)),
           ContextData(),
           'trap',
           NotificationType(
               ObjectIdentity('IF-MIB', 'linkUp'),
                              instanceIndex=(123,),
                              objects={('IF-MIB', 'ifIndex'): 123,
                                       ('IF-MIB', 'ifAdminStatus'): 'up',
                                       ('IF-MIB', 'ifOperStatus'): 'up'}
           )
       )
   )

   if errorIndication:
       print(errorIndication)

"Download" script.


INFORM, auth: MD5 privacy: DES
==============================

Send SNMP INFORM notification using the following options:

* SNMPv3

* with user 'usr-md5-des', auth: MD5, priv DES

* over IPv4/UDP

* send INFORM notification

* with TRAP ID 'warmStart' specified as a string OID

* include managed object information 1.3.6.1.2.1.1.5.0 = 'system name'

Functionally similar to:

   $ snmpinform -v3 -l authPriv -u usr-md5-des -A authkey1 -X privkey1 demo.snmplabs.com 12345 1.3.6.1.4.1.20408.4.1.1.2 1.3.6.1.2.1.1.1.0 s "my system"

   from pysnmp.hlapi import *

   errorIndication, errorStatus, errorIndex, varBinds = next(
       sendNotification(
           SnmpEngine(),
           UsmUserData('usr-md5-des', 'authkey1', 'privkey1'),
           UdpTransportTarget(('demo.snmplabs.com', 162)),
           ContextData(),
           'inform',
           NotificationType(
               ObjectIdentity('1.3.6.1.6.3.1.1.5.2')
           ).addVarBinds(
                ObjectType(ObjectIdentity('1.3.6.1.2.1.1.5.0'), 'system name')
           )
       )
   )

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

"Download" script.


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 pysnmp.hlapi import *

   errorIndication, errorStatus, errorIndex, varBinds = next(
       sendNotification(
           SnmpEngine(),
           CommunityData('public', mpModel=0),
           UdpTransportTarget(('demo.snmplabs.com', 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'))
           )
       )
   )

   if errorIndication:
       print(errorIndication)

"Download" script.


SNMPv3 TRAP: auth SHA, privacy: AES128
======================================

Send SNMP notification using the following options:

* SNMPv3

* with authoritative snmpEngineId = 0x8000000001020304 (USM must be
  configured at the Receiver accordingly)

* with user 'usr-sha-aes128', auth: SHA, priv: AES128

* over IPv4/UDP

* send TRAP notification

* with TRAP ID 'authenticationFailure' specified as a MIB symbol

* do not include any additional managed object information

SNMPv3 TRAPs requires pre-sharing the Notification Originator's value
of SnmpEngineId with Notification Receiver. To facilitate that we will
use static (e.g. not autogenerated) version of snmpEngineId.

Functionally similar to:

   $ snmptrap -v3 -e 8000000001020304 -l authPriv -u usr-sha-aes -A authkey1 -X privkey1 -a SHA -x AES demo.snmplabs.com 12345 1.3.6.1.4.1.20408.4.1.1.2 1.3.6.1.2.1.1.1.0 s "my system"

   from pysnmp.hlapi import *

   errorIndication, errorStatus, errorIndex, varBinds = next(
       sendNotification(
           SnmpEngine(OctetString(hexValue='8000000001020304')),
           UsmUserData('usr-sha-aes128', 'authkey1', 'privkey1',
                       authProtocol=usmHMACSHAAuthProtocol,
                       privProtocol=usmAesCfb128Protocol),
           UdpTransportTarget(('demo.snmplabs.com', 162)),
           ContextData(),
           'trap',
           NotificationType(ObjectIdentity('SNMPv2-MIB', 'authenticationFailure'))
       )
   )

   if errorIndication:
       print(errorIndication)

"Download" script.

See also: library reference.
