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.v3arch.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):
deferred = sendNotification(
SnmpEngine(),
CommunityData('public', mpModel=0),
UdpTransportTarget((hostname, 162)),
ContextData(),
'trap',
NotificationType(
ObjectIdentity('1.3.6.1.6.3.1.1.5.2')
).loadMibs(
'SNMPv2-MIB'
).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'))
)
)
deferred.addCallback(success, hostname).addErrback(failure, hostname)
return deferred
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.v3arch.twisted import *
@defer.inlineCallbacks
def sendtrap(reactor, snmpEngine, hostname):
deferred = sendNotification(
snmpEngine,
CommunityData('public', mpModel=1),
UdpTransportTarget((hostname, 162)),
ContextData(),
'trap',
NotificationType(
ObjectIdentity('1.3.6.1.6.3.1.1.5.2')
).loadMibs(
'SNMPv2-MIB'
).addVarBinds(
ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0'), OctetString('Hello from Twisted'))
)
)
yield deferred
# 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.