本文整理汇总了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
示例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))
示例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
示例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()
示例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()
示例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)
#.........这里部分代码省略.........
示例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()
示例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
示例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)
示例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
#.........这里部分代码省略.........
示例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()
示例12: __init__
def __init__(self):
self.thread_stop = False
AsynsockDispatcher.__init__(self)
示例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)
示例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()