当前位置: 首页>>代码示例>>Python>>正文


Python dispatch.AsynsockDispatcher类代码示例

本文整理汇总了Python中pysnmp.carrier.asynsock.dispatch.AsynsockDispatcher的典型用法代码示例。如果您正苦于以下问题:Python AsynsockDispatcher类的具体用法?Python AsynsockDispatcher怎么用?Python AsynsockDispatcher使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了AsynsockDispatcher类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: trap_listener

    def trap_listener(self):
	    #print "RECEIVER IP:", self.rcvr_ip 
    	self.transportDispatcher = AsynsockDispatcher()
        self.terminationRequestedFlag = False
	    #print "TER FLAG:", self.terminationRequestedFlag

    	self.transportDispatcher.registerRecvCbFun(self.cbFun)
        self.transportDispatcher.registerTimerCbFun(self.timerCb)
    	self.transportDispatcher.registerTransport(udp.domainName,
            udp.UdpSocketTransport().openServerMode(("%s" % self.rcvr_ip, 162))
    	)
        #time.sleep(1)


        # Generate the trap for the given Event.
        self.gen_trap.generate_trap(self.event_name)


    	self.transportDispatcher.jobStarted(1)
        print "Run Dispatcher...."
        self.transportDispatcher.runDispatcher()
        print "Close Dispatcher...."
        self.transportDispatcher.closeDispatcher()
        print "\n"

        #print "varBinds : ", self.varBinds
        #print "Version : ", self.version
        #print "specificTrap : ", self.specificTrap 


        return self.varBinds, self.specificTrap, self.version 
开发者ID:terafastnetworks,项目名称:snmp_trap,代码行数:31,代码来源:trap_receiver.py

示例2: SnmpServer

class SnmpServer(threading.Thread):
	def __init__(self, address):
		threading.Thread.__init__(self)
		self._address = address
		self._transportDispatcher = AsynsockDispatcher()
		self._transportDispatcher.registerRecvCbFun(self.onSnmpMessage)

	def run(self):
		self._transportDispatcher.registerTransport(udp.domainName, udp.UdpSocketTransport().openServerMode(self._address))
		getLogger().info("Now listening on %s:%s" % self._address)
		self._transportDispatcher.jobStarted(1)
		try:
			self._transportDispatcher.runDispatcher(timeout = 1)
		except Exception, e:
			getLogger().error(u"Error while handling an SNMP message: %s" % unicode(e))
开发者ID:rolfschr,项目名称:testerman,代码行数:15,代码来源:Snmp.py

示例3: main

def main():
	signal.signal(signal.SIGINT, signal_handler)
	signal.signal(signal.SIGTERM, signal_handler)
	
	# global
	global myamqp, transportDispatcher

	# Connect to amqp bus
	logger.debug("Start AMQP ...")
	myamqp = camqp()

	logger.info("Load all MIBs ...")
	for oid in snmp2amqp_conf.mibs.keys():
		mibs[oid] = mib(snmp2amqp_conf.mibs[oid])
	

	logger.info("Init SNMP listenner ...")
	transportDispatcher = AsynsockDispatcher()

	transportDispatcher.registerTransport(
		udp.domainName, udp.UdpSocketTransport().openServerMode((snmp2amqp_conf.interface, snmp2amqp_conf.port))
		)

	transportDispatcher.registerRecvCbFun(cbFun)
	transportDispatcher.jobStarted(1) # this job would never finish

	## set euid of process
	os.setuid(getpwnam('canopsis')[2])

	myamqp.start()

	logger.info("Wait SNMP traps ...")
	try:
		transportDispatcher.runDispatcher()
	except Exception, err:
		## Impossible to stop transportDispatcher properly ...
		logger.error(err)
		pass
开发者ID:EzanLTD,项目名称:canopsis,代码行数:38,代码来源:snmp2amqp.py

示例4: threadFunction

    def threadFunction(self):
        self.transportDispatcher = AsynsockDispatcher()

        self.transportDispatcher.registerRecvCbFun(onTrap)
        
        # UDP/IPv4
        self.transportDispatcher.registerTransport(
            udp.domainName, udp.UdpSocketTransport().openServerMode((self.target, self.port))
        )

        self.transportDispatcher.jobStarted(1)

        try:
            # Dispatcher will never finish as job#1 never reaches zero
            self.transportDispatcher.runDispatcher()
        except:
            self.transportDispatcher.closeDispatcher()
            raise
        else:
            self.transportDispatcher.closeDispatcher()
开发者ID:codyrat,项目名称:OpenClos,代码行数:20,代码来源:trapd.py

示例5: threadFunction

    def threadFunction(self):
        self.transportDispatcher = AsynsockDispatcher()

        self.transportDispatcher.registerRecvCbFun(onTrap)
        
        # UDP/IPv4
        self.transportDispatcher.registerTransport(
            udp.domainName, udp.UdpSocketTransport().openServerMode((self.target, self.port))
        )

        self.transportDispatcher.jobStarted(1)

        try:
            # Dispatcher will never finish as job#1 never reaches zero
            self.transportDispatcher.runDispatcher()
        except Exception as exc:
            logger.error("Encounted error '%s' on trap receiver %s:%d" % (exc, self.target, self.port))
            self.transportDispatcher.closeDispatcher()
            raise TrapDaemonError("Trap receiver %s:%d" % (self.target, self.port), exc)
        else:
            self.transportDispatcher.closeDispatcher()
开发者ID:Juniper,项目名称:OpenClos,代码行数:21,代码来源:trapd.py

示例6: __init__

class TrapReceiver:

    def __init__(self, rcv_ip, box_ip, event_name, port=162, inform=None):
	    
        
        
        self.rcvr_ip = rcv_ip
	   
        self.port = port
        self.box_ip = box_ip
        self.event_name = event_name
        self.gen_trap = GenerateTrap(self.box_ip)
        self.inform = inform


    def cbFun(self, transportDispatcher, transportDomain,
            cbCtx, wholeMsg, ):

        print "cbCtx :", cbCtx

        msgVer = int(api.decodeMessageVersion(wholeMsg))
	    #print "Inisde CB FUN..."
           
        
        print 'Inside CB FUN....'

        if msgVer in api.protoModules:
            pMod = api.protoModules[msgVer]
    	else:
            print('Unsupported SNMP version %s' % msgVer)
            #return
    	
        reqMsg, wholeMsg = decoder.decode(
            wholeMsg, asn1Spec=pMod.Message(),
    	)

        self.req = reqMsg

        print 'Type :', type(self.req)

        print 'Inform :', self.inform

        if self.inform:
            print 'Inside Inform IF........'
            if not 'InformRequestPDU()' in str(self.req):
                print 'Inform Message is not sent....failed...'



        print 'reqMsg : %s' % self.req
        #print 'wholeMsg : %s' % wholeMsg

    	#print('Notification message from %s:%s: ' % (
        #    transportDomain, transportAddress
        #    )
    	#)
    	reqPDU = pMod.apiMessage.getPDU(reqMsg)

        print ',,,,reqPDU : %s' % reqPDU
    	varBinds = pMod.apiPDU.getVarBindList(reqPDU)
    	#transportDispatcher.jobFinished(1)
	    
        self.terminationRequestedFlag = True
        if msgVer == api.protoVersion1:
	        self.varBinds = pMod.apiTrapPDU.getVarBindList(reqPDU)
	        self.specificTrap = pMod.apiTrapPDU.getSpecificTrap(reqPDU).prettyPrint()
	        self.version = 1 
	    
        if msgVer == api.protoVersion2c:
	        self.varBinds = pMod.apiPDU.getVarBindList(reqPDU)
	        self.specificTrap = None	
	        self.version = 2


    def timerCb(self, timeNow=10):
	    print "Inside Timer CB..."
	    if self.terminationRequestedFlag: 
	        print "Finishing the Job..."
	        self.transportDispatcher.jobFinished(1)
	    else:
	        self.terminationRequestedFlag = True


    def trap_listener(self):
	    #print "RECEIVER IP:", self.rcvr_ip 
    	self.transportDispatcher = AsynsockDispatcher()
        self.terminationRequestedFlag = False
	    #print "TER FLAG:", self.terminationRequestedFlag

    	self.transportDispatcher.registerRecvCbFun(self.cbFun)
        self.transportDispatcher.registerTimerCbFun(self.timerCb)
    	self.transportDispatcher.registerTransport(udp.domainName,
            udp.UdpSocketTransport().openServerMode(("%s" % self.rcvr_ip, 162))
    	)
        #time.sleep(1)


        # Generate the trap for the given Event.
        self.gen_trap.generate_trap(self.event_name)

#.........这里部分代码省略.........
开发者ID:terafastnetworks,项目名称:snmp_trap,代码行数:101,代码来源:trap_receiver.py

示例7: _trap_receiver

def _trap_receiver(trap_filter, host, port, timeout):
    started = time.time()
    def _trap_timer_cb(now):
        if now - started > timeout:
            raise AssertionError('No matching trap received in %s.' %
                    robot.utils.secs_to_timestr(timeout))
    def _trap_receiver_cb(transport, domain, sock, msg):
        if decodeMessageVersion(msg) != protoVersion2c:
            raise RuntimeError('Only SNMP v2c traps are supported.')

        req, msg = decoder.decode(msg, asn1Spec=v2c.Message())
        pdu = v2c.apiMessage.getPDU(req)

        # ignore any non trap PDUs
        if not pdu.isSameTypeWith(v2c.TrapPDU()):
            return

        if trap_filter(domain, sock, pdu):
            raise StopListener()


        # Stop the receiver if the trap we are looking for was received.
        if False:
            raise StopListener()

    dispatcher = AsynsockDispatcher()
    dispatcher.registerRecvCbFun(_trap_receiver_cb)
    dispatcher.registerTimerCbFun(_trap_timer_cb)

    transport = udp.UdpSocketTransport().openServerMode((host, port))
    dispatcher.registerTransport(udp.domainName, transport)

    # we'll never finish, except through an exception
    dispatcher.jobStarted(1)

    try:
        dispatcher.runDispatcher()
    except StopListener:
        pass
    finally:
        dispatcher.closeDispatcher()
开发者ID:njustbxh,项目名称:robotframework-snmplibrary,代码行数:41,代码来源:traps.py

示例8: print

        rspMsg, wholeMsg = decoder.decode(wholeMsg, asn1Spec=pMod.Message())
        rspPDU = pMod.apiMessage.getPDU(rspMsg)
        # Match response to request
        if pMod.apiPDU.getRequestID(reqPDU) == pMod.apiPDU.getRequestID(rspPDU):
            # Check for SNMP errors reported
            errorStatus = pMod.apiPDU.getErrorStatus(rspPDU)
            if errorStatus:
                print(errorStatus.prettyPrint())
            else:
                for oid, val in pMod.apiPDU.getVarBinds(rspPDU):
                    print("%s = %s" % (oid.prettyPrint(), val.prettyPrint()))
            transportDispatcher.jobFinished(1)
    return wholeMsg


transportDispatcher = AsynsockDispatcher()

transportDispatcher.registerRecvCbFun(cbRecvFun)
transportDispatcher.registerTimerCbFun(cbTimerFun)

# UDP/IPv4
transportDispatcher.registerTransport(udp.domainName, udp.UdpSocketTransport().openClientMode())

# Pass message to dispatcher
transportDispatcher.sendMessage(encoder.encode(reqMsg), udp.domainName, ("10.43.211.62", 161))
transportDispatcher.jobStarted(1)

## UDP/IPv6 (second copy of the same PDU will be sent)
transportDispatcher.registerTransport(udp6.domainName, udp6.Udp6SocketTransport().openClientMode())

# Pass message to dispatcher
开发者ID:stju19,项目名称:study,代码行数:31,代码来源:getgen.py

示例9: print

    while wholeMsg:
        rspMsg, wholeMsg = decoder.decode(wholeMsg, asn1Spec=pMod.Message())
        rspPDU = pMod.apiMessage.getPDU(rspMsg)
        # Match response to request
        if pMod.apiPDU.getRequestID(reqPDU)==pMod.apiPDU.getRequestID(rspPDU):
            # Check for SNMP errors reported
            errorStatus = pMod.apiPDU.getErrorStatus(rspPDU)
            if errorStatus:
                print(errorStatus.prettyPrint())
            else:
                for oid, val in pMod.apiPDU.getVarBinds(rspPDU):
                    print('%s = %s' % (oid.prettyPrint(), val.prettyPrint()))
            transportDispatcher.jobFinished(1)
    return wholeMsg

transportDispatcher = AsynsockDispatcher()

transportDispatcher.registerRecvCbFun(cbRecvFun)
transportDispatcher.registerTimerCbFun(cbTimerFun)

# UDP/IPv4
udpSocketTransport = udp.UdpSocketTransport().openClientMode().enableBroadcast()
transportDispatcher.registerTransport(udp.domainName, udpSocketTransport)

# Pass message to dispatcher
transportDispatcher.sendMessage(
    encoder.encode(reqMsg), udp.domainName, ('255.255.255.255', 161)
)

# wait for a maximum of 10 responses or time out
transportDispatcher.jobStarted(1, maxNumberResponses)
开发者ID:stju19,项目名称:study,代码行数:31,代码来源:get-v2c-udp-broadcast-agent-discovery.py

示例10: SNMPTrap

class SNMPTrap(Block):

    ip_address = StringProperty(title='IP Address', default='127.0.0.1')
    port = IntProperty(title='Port', default=162)
    version = VersionProperty("0.4.0")

    def __init__(self):
        super().__init__()
        self._transport_dispatcher = None
        self._dispatcher_thread = None

    def configure(self, context):
        super().configure(context)
        self._transport_dispatcher = AsynsockDispatcher()
        # register trap-receiver callback
        self._transport_dispatcher.registerRecvCbFun(self._on_trap)
        self._register_transports()

    def _register_transports(self):
        # UDP/IPv4
        self._transport_dispatcher.registerTransport(
            udp.domainName, udp.UdpSocketTransport().openServerMode(
                (self.ip_address(), self.port())))
        # UDP/IPv6
        self._transport_dispatcher.registerTransport(
            udp6.domainName, udp6.Udp6SocketTransport().openServerMode(
                ('::1', self.port())))

    def start(self):
        super().start()
        self._dispatcher_thread = \
            TrapDispatcherThread(self._transport_dispatcher, self.logger)
        self._dispatcher_thread.start()

    def stop(self):
        if self._dispatcher_thread:
            self._dispatcher_thread.stop()
            self._dispatcher_thread.join()
            self._dispatcher_thread = None

        super().stop()

    def _on_trap(self, transport_dispatcher, transport_domain,
                 transport_address, whole_msg):
        """ This method is called from pysnmp whenever a trap is received
        """
        self.logger.debug('Trap received')
        signals = []
        while whole_msg:
            signal_data = {}
            msg_ver = int(api.decodeMessageVersion(whole_msg))
            if msg_ver in api.protoModules:
                p_mod = api.protoModules[msg_ver]
            else:
                self.logger.warning('Unsupported SNMP version %s' % msg_ver)
                return
            req_msg, whole_msg = decoder.decode(
                whole_msg, asn1Spec=p_mod.Message(),)

            self.logger.info('Notification message from %s:%s: ' % (
                transport_domain, transport_address))
            signal_data["transport_domain"] = \
                str(oid_parser(transport_domain))
            signal_data["transport_address"] = \
                str(oid_parser(transport_address))

            req_pdu = p_mod.apiMessage.getPDU(req_msg)
            if req_pdu.isSameTypeWith(p_mod.TrapPDU()):
                if msg_ver == api.protoVersion1:
                    signal_data["enterprise"] = \
                        p_mod.apiTrapPDU.getEnterprise(req_pdu).prettyPrint()
                    signal_data["agent address"] = \
                        p_mod.apiTrapPDU.getAgentAddr(req_pdu).prettyPrint()
                    signal_data["generic trap"] = \
                        p_mod.apiTrapPDU.getGenericTrap(req_pdu).prettyPrint()
                    signal_data["specific trap"] = \
                        p_mod.apiTrapPDU.getSpecificTrap(req_pdu).prettyPrint()
                    signal_data["uptime"] = \
                        p_mod.apiTrapPDU.getTimeStamp(req_pdu).prettyPrint()
                    var_binds = p_mod.apiTrapPDU.getVarBindList(req_pdu)
                else:
                    var_binds = p_mod.apiPDU.getVarBindList(req_pdu)
                signal_data["var-binds"] = {}
                for item in var_binds:
                    oid = item[0]
                    val = item[1]
                    signal_data["var-binds"][str(oid_parser(oid._value))] = \
                        self._get_var_bind_data(val)
            signals.append(Signal(signal_data))
        if len(signals):
            self.notify_signals(signals, "trap")

    def _get_var_bind_data(self, val):
        """ Processes data associated to a given var bind oid

        Args:
            val: value associated to an oid

        Returns:
            data in dictionary form
#.........这里部分代码省略.........
开发者ID:nio-blocks,项目名称:snmp,代码行数:101,代码来源:snmp_trap_block.py

示例11: sendSNMPMessage

 def sendSNMPMessage(self, reqMsg):
     transportDispatcher = AsynsockDispatcher()
     
     transportDispatcher.registerTransport(udp.domainName, udp.UdpSocketTransport().openClientMode())
     transportDispatcher.registerRecvCbFun(self.cbRecvFun)
     transportDispatcher.registerTimerCbFun(self.cbTimerFun)
     
     transportDispatcher.sendMessage(encoder.encode(reqMsg), udp.domainName, (self.host, self.port))
     
     transportDispatcher.jobStarted(1)
     transportDispatcher.runDispatcher()
     transportDispatcher.closeDispatcher()
开发者ID:EMamoshin,项目名称:fakebras,代码行数:12,代码来源:SNMPSender.py

示例12: __init__

 def __init__(self):
     self.thread_stop = False
     AsynsockDispatcher.__init__(self)
开发者ID:my76128,项目名称:OPS2,代码行数:3,代码来源:snmp_traprcv.py

示例13: pollFn

def pollFn():
    #Check the heater status
    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(),
            CommunityData('public',mpModel=0),
            UdpTransportTarget(('localhost', 1162)),
            ContextData(),
            ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0')))
    )

    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 ]))

    # Get the temperature
    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(),
            CommunityData('public',mpModel=0),
            UdpTransportTarget(('localhost', 1161)),
            ContextData(),
            ObjectType(ObjectIdentity('1.3.6.1.2.1.1.1.0')))
    )

    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 ]))
        #SET Command

        #Check if the temperature is less than 10
        for oid, val in varBinds:
            print('%s = %s' % (oid.prettyPrint(), val.prettyPrint()))
            returnedVal = int(val)
            if (returnedVal < 10):
                print returnedVal
                # Protocol version to use
                #pMod = api.protoModules[api.protoVersion1]
                pMod = api.protoModules[api.protoVersion2c]

                # Build PDU
                reqPDU =  pMod.SetRequestPDU()
                pMod.apiPDU.setDefaults(reqPDU)
                pMod.apiPDU.setVarBinds(
                    reqPDU,
                    # Change the heater status to ON
                    ( ('1.3.6.1.2.1.1.1.0', pMod.OctetString('ON')),
                     # ('1.3.6.1.2.1.1.3.0', pMod.TimeTicks(12))
                    )
                    )

                # Build message
                reqMsg = pMod.Message()
                pMod.apiMessage.setDefaults(reqMsg)
                pMod.apiMessage.setCommunity(reqMsg, 'public')
                pMod.apiMessage.setPDU(reqMsg, reqPDU)

                startedAt = time()

                def cbTimerFun(timeNow):
                    if timeNow - startedAt > 3:
                        raise Exception("Request timed out")

                def cbRecvFun(transportDispatcher, transportDomain, transportAddress,
                              wholeMsg, reqPDU=reqPDU):
                    while wholeMsg:
                        rspMsg, wholeMsg = decoder.decode(wholeMsg, asn1Spec=pMod.Message())
                        rspPDU = pMod.apiMessage.getPDU(rspMsg)
                        # Match response to request
                        if pMod.apiPDU.getRequestID(reqPDU)==pMod.apiPDU.getRequestID(rspPDU):
                            # Check for SNMP errors reported
                            errorStatus = pMod.apiPDU.getErrorStatus(rspPDU)
                            if errorStatus:
                                print(errorStatus.prettyPrint())
                            else:
                                for oid, val in pMod.apiPDU.getVarBinds(rspPDU):
                                    print('%s = %s' (oid.prettyPrint(), val.prettyPrint()))
                            transportDispatcher.jobFinished(1)
                    return wholeMsg

                transportDispatcher = AsynsockDispatcher()

                transportDispatcher.registerRecvCbFun(cbRecvFun)
                transportDispatcher.registerTimerCbFun(cbTimerFun)

#.........这里部分代码省略.........
开发者ID:stephenoken,项目名称:-SNMP-Management-Station-for-Wireless-Indoor-Network,代码行数:101,代码来源:manager.py

示例14: run

 def run(self):
     
    transportDispatcher = AsynsockDispatcher()
    transportDispatcher.registerRecvCbFun(trapCallback)
    if self.ipv6:
        transport = udp.Udp6SocketTransport()
        domainName = udp6.domainName
    else:
        transport = udp.UdpSocketTransport()  
        domainName = udp.domainName
            
    try:     
        transportDispatcher.registerTransport(domainName, transport.openServerMode((self.host, self.port)))
  
        transportDispatcher.jobStarted(1)
        # Dispatcher will never finish as job#1 never reaches zero
        transportDispatcher.runDispatcher()     
    except RuntimeError,e:
        transportDispatcher.closeDispatcher()
        logging.error("Looks like an error: %s" % str(e))
        sys.exit(1)
开发者ID:shreyasnan,项目名称:SplunkModularInputsPythonFramework,代码行数:21,代码来源:snmp.py

示例15: ConfigLoadCommit

                config = ConfigLoadCommit(lsp_bw_delete,ConfigFormatType.CONFIG_FORMAT_SET, ConfigDatabaseType.CONFIG_DB_SHARED,
                              ConfigLoadType.CONFIG_LOAD_REPLACE, commit)
				result5 = mgmt_handle2.ExecuteCfgCommand(config)
				print ('Deleted remote JET router MPLS lsp bandwidth'
                                'and listening to IPASO bw change notification\n')
			    else:
				print 'listening to IPASO bw change notification \n'
			else:
			    print 'No changes required in remote jet lsp  \n'
		else:
		    print 'No action required as received trap is generic'
	    else:
		    print 'No action required as received trap is generic'
	return wholeMsg

transportDispatcher = AsynsockDispatcher()

transportDispatcher.registerRecvCbFun(bandwidth_monitor_activator)

# UDP/IPv4 Juniper JET Router management IP
transportDispatcher.registerTransport(
    udp.domainName, udp.UdpSocketTransport().openServerMode((JET_LOCAL_IP, 162))
)

transportDispatcher.jobStarted(1)

try:
    # Dispatcher will never finish as job#1 never reaches zero
    transportDispatcher.runDispatcher()
except:
    transportDispatcher.closeDispatcher()
开发者ID:gvarao,项目名称:jet-app-store,代码行数:31,代码来源:MicrowaveBandwidthNotification.py


注:本文中的pysnmp.carrier.asynsock.dispatch.AsynsockDispatcher类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。