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:
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:
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.