TRAP/INFORM Operation#

async pysnmp.hlapi.v1arch.asyncio.sendNotification(snmpDispatcher: SnmpDispatcher, authData: CommunityData, transportTarget: AbstractTransportTarget, notifyType: str, *varBinds: NotificationType, **options) tuple[pysnmp.proto.errind.ErrorIndication, pysnmp.proto.rfc1902.Integer32 | int, pysnmp.proto.rfc1902.Integer32 | int, tuple[pysnmp.smi.rfc1902.ObjectType, ...]]#

Creates a generator to send SNMP notification.

When iterator gets advanced by asyncio main loop, SNMP TRAP or INFORM notification is send (RFC 1905#section-4.2.6). The iterator yields asyncio.Future which gets done whenever response arrives or error occurs.

Parameters:
  • snmpDispatcher (SnmpDispatcher) – Class instance representing asynio-based asynchronous event loop and associated state information.

  • authData (CommunityData) – Class instance representing SNMPv1/v2c credentials.

  • transportTarget (UdpTransportTarget or) – Udp6TransportTarget Class instance representing transport type along with SNMP peer address.

  • notifyType (str) – Indicates type of notification to be sent. Recognized literal values are trap or inform.

  • *varBinds (tuple of OID-value pairs or ObjectType or NotificationType) – One or more objects representing MIB variables to place into SNMP notification. It could be tuples of OID-values or ObjectType class instances of NotificationType objects.

    Besides user variable-bindings, SNMP Notification PDU requires at least two variable-bindings to be present:

    1. SNMPv2-MIB::sysUpTime.0 = <agent uptime>

    2. SNMPv2-SMI::snmpTrapOID.0 = <notification ID>

    When sending SNMPv1 TRAP, more variable-bindings could be present:

    1. SNMP-COMMUNITY-MIB::snmpTrapAddress.0 = <agent-IP>

    2. SNMP-COMMUNITY-MIB::snmpTrapCommunity.0 = <snmp-community-name>

    3. SNMP-COMMUNITY-MIB::snmpTrapEnterprise.0 = <enterprise-OID>

    If user does not supply some or any of the above variable-bindings or if they are at the wrong positions, the system will add/reorder the missing ones automatically.

    On top of that, some notification types imply including some additional variable-bindings providing additional details on the event being reported. Therefore it is generally easier to use NotificationType object which will help adding relevant variable-bindings.

Other Parameters:

**options – Request options:

  • lookupMib - load MIB and resolve response MIB variables at the cost of slightly reduced performance. Default is False, unless ObjectType or NotificationType is present among varBinds in which case lookupMib gets automatically enabled.

Yields:
  • errorIndication (str) – True value indicates SNMP engine error.

  • errorStatus (str) – True value indicates SNMP PDU error.

  • errorIndex (int) – Non-zero value refers to varBinds[errorIndex-1]

  • varBinds (tuple) – A sequence of OID-value pairs in form of base SNMP types (if lookupMib is False) or ObjectType class instances (if lookupMib is True) representing MIB variables returned in SNMP response.

Raises:

PySnmpError – Or its derivative indicating that an error occurred while performing SNMP operation.

Examples

>>> import asyncio
>>> from pysnmp.hlapi.v1arch.asyncio import *
>>>
>>> async def run():
...     errorIndication, errorStatus, errorIndex, varBinds = await sendNotification(
...         SnmpDispatcher(),
...         CommunityData('public'),
...         await UdpTransportTarget.create(('demo.pysnmp.com', 162)),
...         'trap',
...         NotificationType(ObjectIdentity('IF-MIB', 'linkDown')))
...     print(errorIndication, errorStatus, errorIndex, varBinds)
...
>>> asyncio.run(run())
(None, 0, 0, [])
>>>