def hook_to_reactor(self):
        transport_dispatcher = TwistedDispatcher()

        transport_dispatcher.registerRecvCbFun(self.message_received)

        transport_dispatcher.registerTransport(
            udp.domainName,
            udp.UdpTwistedTransport().openServerMode((self.ip, self.port)))
        LOG.info("%s (SNMP): Registered on %s udp/%s with community %s",
                 self.name, self.ip, self.port, self.community)
Example #2
0
    def __init__(self, host, port, community):
        self.snmp = engine.SnmpEngine()
        self.snmp.registerTransportDispatcher(dispatch.TwistedDispatcher())

        config.addV1System(self.snmp, 'my-area', community)
        config.addTargetParams(self.snmp, 'my-creds', 'my-area',
                               'noAuthNoPriv', 0)
        config.addSocketTransport(self.snmp, udp.domainName,
                                  udp.UdpTwistedTransport().openClientMode())
        config.addTargetAddr(self.snmp, 'my-router', udp.domainName,
                             (host, port), 'my-creds')
Example #3
0
    def __init__(self):
        self.unReadyNodes = list()
        self.identifiers = dict()
        self.snmpEngine = engine.SnmpEngine()
        self.bcmdgen = cmdgen.BulkCommandGenerator()

        self.snmpEngine.registerTransportDispatcher(
            dispatch.TwistedDispatcher())
        config.addV1System(self.snmpEngine, 'test-agent', SNMP_COMMUNITY)
        config.addTargetParams(self.snmpEngine, 'myParams', 'test-agent',
                               'noAuthNoPriv', 1)

        config.addSocketTransport(self.snmpEngine, udp.domainName,
                                  udp.UdpTwistedTransport().openClientMode())

        self.carbonFact = CarbonFactory(self)
        reactor.connectTCP(GRAPHITE_HOST, 2003, self.carbonFact)
Example #4
0
    snmpEngine, 'usr-md5-des',
        config.usmHMACMD5AuthProtocol, 'authkey1',
        config.usmDESPrivProtocol, 'privkey1'
)
config.addTargetParams(snmpEngine, 'my-creds', 'usr-md5-des', 'authPriv')

#
# Setup transport endpoint and bind it with security settings yielding
# a target name
#

# UDP/IPv4
config.addTransport(
    snmpEngine,
    udp.domainName,
    udp.UdpTwistedTransport().openClientMode()
)
config.addTargetAddr(
    snmpEngine, 'my-router',
    udp.domainName, ('195.218.195.228', 161),
    'my-creds'
)

# Error/response receiver
def cbFun(cbCtx):
    (errorIndication, errorStatus, errorIndex, varBindTable) = cbCtx
    if errorIndication:
        print(errorIndication)
    elif errorStatus:
        print('%s at %s' % (
                errorStatus.prettyPrint(),
Example #5
0
from twisted.internet import reactor
from pysnmp.entity import engine, config
from pysnmp.carrier.twisted.dgram import udp
from pysnmp.entity.rfc3413 import ntfrcv
from pysnmp.proto import rfc1902

# Create SNMP engine with autogenernated engineID and pre-bound
# to socket transport dispatcher
snmpEngine = engine.SnmpEngine()

# Transport setup

# UDP over IPv4
config.addTransport(
    snmpEngine, udp.domainName,
    udp.UdpTwistedTransport().openServerMode(('127.0.0.1', 162)))

# -- begin of SNMPv3/USM setup

# user: usr-md5-des, auth: MD5, priv DES
config.addV3User(snmpEngine, 'usr-md5-des', config.usmHMACMD5AuthProtocol,
                 'authkey1', config.usmDESPrivProtocol, 'privkey1')

# user: usr-md5-des, auth: MD5, priv DES, securityEngineId: 8000000001020304
# this USM entry is used for TRAP receiving purposes
config.addV3User(
    snmpEngine,
    'usr-md5-des',
    config.usmHMACMD5AuthProtocol,
    'authkey1',
    config.usmDESPrivProtocol,
# SecurityName <-> CommunityName mapping
config.addV1System(snmpEngine, 'my-area', 'public')

# Specify security settings per SecurityName (SNMPv1 - 0, SNMPv2c - 1)
config.addTargetParams(snmpEngine, 'my-creds', 'my-area', 'noAuthNoPriv', 1)

#
# Setup transport endpoint and bind it with security settings yielding
# a target name
#

# UDP/IPv4
config.addTransport(
    snmpEngine, udp.domainName,
    udp.UdpTwistedTransport().openClientMode(('0.0.0.0', 61024)))
config.addTargetAddr(snmpEngine, 'my-router', udp.domainName,
                     ('195.218.195.228', 161), 'my-creds')


# Error/response receiver
def cbFun(cbCtx):
    (errorIndication, errorStatus, errorIndex, varBindTable) = cbCtx
    if errorIndication:
        print(errorIndication)
    elif errorStatus:
        print('%s at %s' %
              (errorStatus.prettyPrint(),
               errorIndex and varBindTable[-1][int(errorIndex) - 1][0] or '?'))
    else:
        for varBindRow in varBindTable: