def do_validate(): try: config = get_input_config() port = config.get("port") trap_port = config.get("trap_port") snmpinterval = config.get("snmpinterval") max_repetitions = config.get("max_repetitions") non_repeaters = config.get("non_repeaters") validation_failed = False if not port is None and int(port) < 1: print_validation_error("Port value must be a positive integer") validation_failed = True if not trap_port is None and int(trap_port) < 1: print_validation_error("Trap port value must be a positive integer") validation_failed = True if not non_repeaters is None and int(non_repeaters) < 0: print_validation_error("Non Repeaters value must be zero or a positive integer") validation_failed = True if not max_repetitions is None and int(max_repetitions) < 0: print_validation_error("Max Repetitions value must be zero or a positive integer") validation_failed = True if not snmpinterval is None and int(snmpinterval) < 1: print_validation_error("SNMP Polling interval must be a positive integer") validation_failed = True if validation_failed: sys.exit(2) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Exception getting config: %s" % str(e)) sys.exit(1)
def do_run(): config = get_input_config() #params destination=config.get("destination") port=int(config.get("port",161)) snmpinterval=int(config.get("snmpinterval",60)) ipv6=int(config.get("ipv6",0)) try: # update all the root StreamHandlers with a new formatter that includes the config information for h in logging.root.handlers: if isinstance(h, logging.StreamHandler): h.setFormatter( logging.Formatter('%(levelname)s %(message)s snmp_stanza:{0} snmp_destination:{1} snmp_port:{2}'.format(config.get("name"), destination, port)) ) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Couldn't update logging templates: %s host:'" % str(e)) response_handler_args={} response_handler_args_str=config.get("response_handler_args") if not response_handler_args_str is None: response_handler_args = dict((k.strip(), v.strip()) for k,v in (item.split('=') for item in response_handler_args_str.split(delimiter))) response_handler=config.get("response_handler","DefaultResponseHandler") module = __import__("responsehandlers") class_ = getattr(module,response_handler) global RESPONSE_HANDLER_INSTANCE RESPONSE_HANDLER_INSTANCE = class_(**response_handler_args) #snmp 1 and 2C params snmp_version=config.get("snmp_version","2C") communitystring=config.get("communitystring","public") v3_securityName=config.get("v3_securityName","") v3_authKey=config.get("v3_authKey","") v3_privKey=config.get("v3_privKey","") v3_authProtocol_str=config.get("v3_authProtocol","usmHMACMD5AuthProtocol") v3_privProtocol_str=config.get("v3_privProtocol","usmDESPrivProtocol") if v3_authProtocol_str == "usmHMACMD5AuthProtocol": v3_authProtocol = cmdgen.usmHMACMD5AuthProtocol elif v3_authProtocol_str == "usmHMACSHAAuthProtocol": v3_authProtocol = cmdgen.usmHMACSHAAuthProtocol elif v3_authProtocol_str == "usmNoAuthProtocol": v3_authProtocol = cmdgen.usmNoAuthProtocol else: v3_authProtocol = cmdgen.usmNoAuthProtocol if v3_privProtocol_str == "usmDESPrivProtocol": v3_privProtocol = cmdgen.usmDESPrivProtocol elif v3_privProtocol_str == "usm3DESEDEPrivProtocol": v3_privProtocol = cmdgen.usm3DESEDEPrivProtocol elif v3_privProtocol_str == "usmAesCfb128Protocol": v3_privProtocol = cmdgen.usmAesCfb128Protocol elif v3_privProtocol_str == "usmAesCfb192Protocol": v3_privProtocol = cmdgen.usmAesCfb192Protocol elif v3_privProtocol_str == "usmAesCfb256Protocol": v3_privProtocol = cmdgen.usmAesCfb256Protocol elif v3_privProtocol_str == "usmNoPrivProtocol": v3_privProtocol = cmdgen.usmNoPrivProtocol else: v3_privProtocol = cmdgen.usmNoPrivProtocol #object names to poll object_names=config.get("object_names") if not object_names is None: oid_args = map(str,object_names.split(",")) #trim any whitespace using a list comprehension oid_args = [x.strip(' ') for x in oid_args] #GET BULK params do_bulk=int(config.get("do_bulk_get",0)) split_bulk_output=int(config.get("split_bulk_output",0)) non_repeaters=int(config.get("non_repeaters",0)) max_repetitions=int(config.get("max_repetitions",25)) #TRAP listener params listen_traps=int(config.get("listen_traps",0)) trap_port=int(config.get("trap_port",162)) trap_host=config.get("trap_host","localhost") #MIBs to load mib_names=config.get("mib_names") mib_names_args=None if not mib_names is None: mib_names_args = map(str,mib_names.split(",")) #trim any whitespace using a list comprehension mib_names_args = [x.strip(' ') for x in mib_names_args] #load in custom MIBS cmdGen = cmdgen.CommandGenerator() mibBuilder = cmdGen.snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder mibSources = (builder.DirMibSource(mib_egg_dir),) for filename in os.listdir(mib_egg_dir): if filename.endswith(".egg"): mibSources = mibSources + (builder.ZipMibSource(filename),) mibSources = mibBuilder.getMibSources() + mibSources mibBuilder.setMibSources(*mibSources) if mib_names_args: mibBuilder.loadModules(*mib_names_args) global mibView mibView = view.MibViewController(mibBuilder) if listen_traps: if snmp_version == "1" or snmp_version == "2C": trapThread = TrapThread(trap_port,trap_host,ipv6) trapThread.start() if snmp_version == "3": trapThread = V3TrapThread(trap_port,trap_host,ipv6,v3_securityName,v3_authKey,v3_authProtocol,v3_privKey,v3_privProtocol) trapThread.start() if not (object_names is None and destination is None): try: if ipv6: transport = cmdgen.Udp6TransportTarget((destination, port)) else: transport = cmdgen.UdpTransportTarget((destination, port)) mp_model_val=1 if snmp_version == "1": mp_model_val=0 if snmp_version == "3": security_object = cmdgen.UsmUserData( v3_securityName, authKey=v3_authKey, privKey=v3_privKey, authProtocol=v3_authProtocol, privProtocol=v3_privProtocol ) else: security_object = cmdgen.CommunityData(communitystring,mpModel=mp_model_val) while True: if do_bulk and not snmp_version == "1": try: errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.bulkCmd( security_object, transport, non_repeaters, max_repetitions, *oid_args, lookupNames=True, lookupValues=True) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Exception with bulkCmd to %s:%s: %s" % (destination, port, str(e))) time.sleep(float(snmpinterval)) continue else: try: errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd( security_object, transport, *oid_args, lookupNames=True, lookupValues=True) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Exception with getCmd to %s:%s: %s" % (destination, port, str(e))) time.sleep(float(snmpinterval)) continue if errorIndication: logging.error(errorIndication) elif errorStatus: logging.error(errorStatus) else: if do_bulk: handle_output(varBindTable,destination,table=True,split_bulk_output=split_bulk_output) else: handle_output(varBinds,destination,table=False,split_bulk_output=split_bulk_output) time.sleep(float(snmpinterval)) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Looks like an error: %s" % str(e)) sys.exit(1)
def do_run(): config = get_input_config() activation_key = config.get("activation_key") app_name = "SNMP Modular Input" m = hashlib.md5() m.update((app_name)) if not m.hexdigest().upper() == activation_key.upper(): logging.error("FATAL Activation key for App '%s' failed" % app_name) sys.exit(2) #params snmp_mode = config.get("snmp_mode", "") destination_list = config.get("destination") if not destination_list is None: destinations = map(str, destination_list.split(",")) #trim any whitespace using a list comprehension destinations = [x.strip(' ') for x in destinations] port = int(config.get("port", 161)) snmpinterval = int(config.get("snmpinterval", 60)) timeout_val = float(config.get("timeout", 1.0)) num_retries = int(config.get("retries", 5)) ipv6 = int(config.get("ipv6", 0)) try: # update all the root StreamHandlers with a new formatter that includes the config information for h in logging.root.handlers: if isinstance(h, logging.StreamHandler): h.setFormatter( logging.Formatter( '%(levelname)s %(message)s snmp_stanza:{0}'.format( config.get("name")))) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Couldn't update logging templates: %s host:'" % str(e)) response_handler_args = {} response_handler_args_str = config.get("response_handler_args") if not response_handler_args_str is None: response_handler_args = dict( (k.strip(), v.strip()) for k, v in (item.split('=') for item in response_handler_args_str.split(','))) response_handler = config.get("response_handler", "DefaultResponseHandler") module = __import__("responsehandlers") class_ = getattr(module, response_handler) global RESPONSE_HANDLER_INSTANCE RESPONSE_HANDLER_INSTANCE = class_(**response_handler_args) #snmp 1 and 2C params snmp_version = config.get("snmp_version", "2C") communitystring = config.get("communitystring", "public") v3_securityName = config.get("v3_securityName", "") v3_authKey = config.get("v3_authKey", None) v3_privKey = config.get("v3_privKey", None) v3_authProtocol_str = config.get("v3_authProtocol", "usmHMACMD5AuthProtocol") v3_privProtocol_str = config.get("v3_privProtocol", "usmDESPrivProtocol") if v3_authProtocol_str == "usmHMACMD5AuthProtocol": v3_authProtocol = cmdgen.usmHMACMD5AuthProtocol elif v3_authProtocol_str == "usmHMACSHAAuthProtocol": v3_authProtocol = cmdgen.usmHMACSHAAuthProtocol elif v3_authProtocol_str == "usmNoAuthProtocol": v3_authProtocol = cmdgen.usmNoAuthProtocol else: v3_authProtocol = cmdgen.usmNoAuthProtocol if v3_privProtocol_str == "usmDESPrivProtocol": v3_privProtocol = cmdgen.usmDESPrivProtocol elif v3_privProtocol_str == "usm3DESEDEPrivProtocol": v3_privProtocol = cmdgen.usm3DESEDEPrivProtocol elif v3_privProtocol_str == "usmAesCfb128Protocol": v3_privProtocol = cmdgen.usmAesCfb128Protocol elif v3_privProtocol_str == "usmAesCfb192Protocol": v3_privProtocol = cmdgen.usmAesCfb192Protocol elif v3_privProtocol_str == "usmAesCfb256Protocol": v3_privProtocol = cmdgen.usmAesCfb256Protocol elif v3_privProtocol_str == "usmNoPrivProtocol": v3_privProtocol = cmdgen.usmNoPrivProtocol else: v3_privProtocol = cmdgen.usmNoPrivProtocol #object names to poll object_names = config.get("object_names") if not object_names is None: oid_args = map(str, object_names.split(",")) #trim any whitespace using a list comprehension oid_args = [x.strip(' ') for x in oid_args] #GET BULK params do_subtree = int(config.get("do_get_subtree", 0)) do_bulk = int(config.get("do_bulk_get", 0)) split_bulk_output = int(config.get("split_bulk_output", 0)) non_repeaters = int(config.get("non_repeaters", 0)) max_repetitions = int(config.get("max_repetitions", 25)) #TRAP listener params listen_traps = int(config.get("listen_traps", 0)) #some backwards compatibility gymnastics if snmp_mode == 'traps': listen_traps = 1 trap_port = int(config.get("trap_port", 162)) trap_host = config.get("trap_host", "localhost") global trap_rdns trap_rdns = int(config.get("trap_rdns", 0)) #MIBs to load mib_names = config.get("mib_names") mib_names_args = None if not mib_names is None: mib_names_args = map(str, mib_names.split(",")) #trim any whitespace using a list comprehension mib_names_args = [x.strip(' ') for x in mib_names_args] #load in custom MIBS cmdGen = cmdgen.CommandGenerator() mibBuilder = cmdGen.snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder mibSources = (builder.DirMibSource(mib_egg_dir), ) for filename in os.listdir(mib_egg_dir): if filename.endswith(".egg"): mibSources = mibSources + (builder.ZipMibSource(filename), ) mibSources = mibBuilder.getMibSources() + mibSources mibBuilder.setMibSources(*mibSources) if mib_names_args: mibBuilder.loadModules(*mib_names_args) global mibView mibView = view.MibViewController(mibBuilder) if listen_traps: if snmp_version == "1" or snmp_version == "2C": trapThread = TrapThread(trap_port, trap_host, ipv6) trapThread.start() if snmp_version == "3": trapThread = V3TrapThread(trap_port, trap_host, ipv6, v3_securityName, v3_authKey, v3_authProtocol, v3_privKey, v3_privProtocol) trapThread.start() if not (object_names is None) and not (destination_list is None): mp_model_val = 1 for destination in destinations: if snmp_version == "1": mp_model_val = 0 if snmp_version == "3": security_object = cmdgen.UsmUserData( v3_securityName, authKey=v3_authKey, privKey=v3_privKey, authProtocol=v3_authProtocol, privProtocol=v3_privProtocol) else: security_object = cmdgen.CommunityData(communitystring, mpModel=mp_model_val) if ipv6: transport = cmdgen.Udp6TransportTarget((destination, port), timeout=timeout_val, retries=num_retries) else: transport = cmdgen.UdpTransportTarget((destination, port), timeout=timeout_val, retries=num_retries) apt = AttributePollerThread(cmdGen, destination, port, transport, snmp_version, do_bulk, do_subtree, security_object, snmpinterval, non_repeaters, max_repetitions, oid_args, split_bulk_output) apt.start()
def do_run(): config = get_input_config() activation_key = config.get("activation_key").strip() app_name = "SNMP Modular Input" if len(activation_key) > 32: activation_hash = activation_key[:32] activation_ts = activation_key[32:][::-1] current_ts = time.time() m = hashlib.md5() m.update((app_name + activation_ts)) if not m.hexdigest().upper() == activation_hash.upper(): logging.error("FATAL Trial Activation key for App '%s' failed. Please ensure that you copy/pasted the key correctly." % app_name) sys.exit(2) if ((current_ts - long(activation_ts)) > 604800): logging.error("FATAL Trial Activation key for App '%s' has now expired. Please visit http://www.baboonbones.com/#activation to purchase a non expiring key." % app_name) sys.exit(2) else: m = hashlib.md5() m.update((app_name)) if not m.hexdigest().upper() == activation_key.upper(): logging.error("FATAL Activation key for App '%s' failed. Please ensure that you copy/pasted the key correctly." % app_name) sys.exit(2) #params snmp_mode=config.get("snmp_mode","") destination_list=config.get("destination") if not destination_list is None: destinations = map(str,destination_list.split(",")) #trim any whitespace using a list comprehension destinations = [x.strip(' ') for x in destinations] port=int(config.get("port",161)) snmpinterval=int(config.get("snmpinterval",60)) timeout_val=float(config.get("timeout",1.0)) num_retries=int(config.get("retries",5)) ipv6=int(config.get("ipv6",0)) try: # update all the root StreamHandlers with a new formatter that includes the config information for h in logging.root.handlers: if isinstance(h, logging.StreamHandler): h.setFormatter( logging.Formatter('%(levelname)s %(message)s snmp_stanza:{0}'.format(config.get("name"))) ) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Couldn't update logging templates: %s host:'" % str(e)) response_handler_args={} response_handler_args_str=config.get("response_handler_args") if not response_handler_args_str is None: response_handler_args = dict((k.strip(), v.strip()) for k,v in (item.split('=') for item in response_handler_args_str.split(','))) response_handler=config.get("response_handler","DefaultResponseHandler") module = __import__("responsehandlers") class_ = getattr(module,response_handler) global RESPONSE_HANDLER_INSTANCE RESPONSE_HANDLER_INSTANCE = class_(**response_handler_args) #snmp 1 and 2C params snmp_version=config.get("snmp_version","2C") communitystring=config.get("communitystring","public") v3_securityName=config.get("v3_securityName","") v3_authKey=config.get("v3_authKey",None) v3_privKey=config.get("v3_privKey",None) v3_authProtocol_str=config.get("v3_authProtocol","usmHMACMD5AuthProtocol") v3_privProtocol_str=config.get("v3_privProtocol","usmDESPrivProtocol") if v3_authProtocol_str == "usmHMACMD5AuthProtocol": v3_authProtocol = cmdgen.usmHMACMD5AuthProtocol elif v3_authProtocol_str == "usmHMACSHAAuthProtocol": v3_authProtocol = cmdgen.usmHMACSHAAuthProtocol elif v3_authProtocol_str == "usmNoAuthProtocol": v3_authProtocol = cmdgen.usmNoAuthProtocol else: v3_authProtocol = cmdgen.usmNoAuthProtocol if v3_privProtocol_str == "usmDESPrivProtocol": v3_privProtocol = cmdgen.usmDESPrivProtocol elif v3_privProtocol_str == "usm3DESEDEPrivProtocol": v3_privProtocol = cmdgen.usm3DESEDEPrivProtocol elif v3_privProtocol_str == "usmAesCfb128Protocol": v3_privProtocol = cmdgen.usmAesCfb128Protocol elif v3_privProtocol_str == "usmAesCfb192Protocol": v3_privProtocol = cmdgen.usmAesCfb192Protocol elif v3_privProtocol_str == "usmAesCfb256Protocol": v3_privProtocol = cmdgen.usmAesCfb256Protocol elif v3_privProtocol_str == "usmNoPrivProtocol": v3_privProtocol = cmdgen.usmNoPrivProtocol else: v3_privProtocol = cmdgen.usmNoPrivProtocol #object names to poll object_names=config.get("object_names") if not object_names is None: oid_args = map(str,object_names.split(",")) #trim any whitespace using a list comprehension oid_args = [x.strip(' ') for x in oid_args] #GET BULK params do_subtree=int(config.get("do_get_subtree",0)) do_bulk=int(config.get("do_bulk_get",0)) split_bulk_output=int(config.get("split_bulk_output",0)) non_repeaters=int(config.get("non_repeaters",0)) max_repetitions=int(config.get("max_repetitions",25)) #TRAP listener params listen_traps=int(config.get("listen_traps",0)) #some backwards compatibility gymnastics if snmp_mode == 'traps': listen_traps = 1 trap_port=int(config.get("trap_port",162)) trap_host=config.get("trap_host","localhost") global trap_rdns trap_rdns=int(config.get("trap_rdns",0)) #MIBs to load mib_names=config.get("mib_names") mib_names_args=None if not mib_names is None: mib_names_args = map(str,mib_names.split(",")) #trim any whitespace using a list comprehension mib_names_args = [x.strip(' ') for x in mib_names_args] #load in custom MIBS cmdGen = cmdgen.CommandGenerator() mibBuilder = cmdGen.snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder mibSources = (builder.DirMibSource(mib_egg_dir),) for filename in os.listdir(mib_egg_dir): if filename.endswith(".egg"): mibSources = mibSources + (builder.ZipMibSource(filename),) mibSources = mibBuilder.getMibSources() + mibSources mibBuilder.setMibSources(*mibSources) if mib_names_args: mibBuilder.loadModules(*mib_names_args) global mibView mibView = view.MibViewController(mibBuilder) if listen_traps: if snmp_version == "1" or snmp_version == "2C": trapThread = TrapThread(trap_port,trap_host,ipv6) trapThread.start() if snmp_version == "3": trapThread = V3TrapThread(trap_port,trap_host,ipv6,v3_securityName,v3_authKey,v3_authProtocol,v3_privKey,v3_privProtocol) trapThread.start() if not (object_names is None) and not(destination_list is None): mp_model_val=1 for destination in destinations: if snmp_version == "1": mp_model_val=0 if snmp_version == "3": security_object = cmdgen.UsmUserData( v3_securityName, authKey=v3_authKey, privKey=v3_privKey, authProtocol=v3_authProtocol, privProtocol=v3_privProtocol ) else: security_object = cmdgen.CommunityData(communitystring,mpModel=mp_model_val) if ipv6: transport = cmdgen.Udp6TransportTarget((destination, port), timeout=timeout_val, retries=num_retries) else: transport = cmdgen.UdpTransportTarget((destination, port), timeout=timeout_val, retries=num_retries) apt = AttributePollerThread(cmdGen,destination,port,transport,snmp_version,do_bulk,do_subtree,security_object,snmpinterval,non_repeaters,max_repetitions,oid_args,split_bulk_output) apt.start()
def do_run(): config = get_input_config() #params snmp_mode = config.get("snmp_mode", "") destination = config.get("destination") port = int(config.get("port", 161)) snmpinterval = int(config.get("snmpinterval", 60)) ipv6 = int(config.get("ipv6", 0)) try: # update all the root StreamHandlers with a new formatter that includes the config information for h in logging.root.handlers: if isinstance(h, logging.StreamHandler): h.setFormatter( logging.Formatter( '%(levelname)s %(message)s snmp_stanza:{0} snmp_destination:{1} snmp_port:{2}' .format(config.get("name"), destination, port))) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Couldn't update logging templates: %s host:'" % str(e)) response_handler_args = {} response_handler_args_str = config.get("response_handler_args") if not response_handler_args_str is None: response_handler_args = dict((k.strip(), v.strip()) for k, v in ( item.split('=') for item in response_handler_args_str.split(delimiter))) response_handler = config.get("response_handler", "DefaultResponseHandler") module = __import__("responsehandlers") class_ = getattr(module, response_handler) global RESPONSE_HANDLER_INSTANCE RESPONSE_HANDLER_INSTANCE = class_(**response_handler_args) #snmp 1 and 2C params snmp_version = config.get("snmp_version", "2C") communitystring = config.get("communitystring", "public") v3_securityName = config.get("v3_securityName", "") v3_authKey = config.get("v3_authKey", "") v3_privKey = config.get("v3_privKey", "") v3_authProtocol_str = config.get("v3_authProtocol", "usmHMACMD5AuthProtocol") v3_privProtocol_str = config.get("v3_privProtocol", "usmDESPrivProtocol") if v3_authProtocol_str == "usmHMACMD5AuthProtocol": v3_authProtocol = cmdgen.usmHMACMD5AuthProtocol elif v3_authProtocol_str == "usmHMACSHAAuthProtocol": v3_authProtocol = cmdgen.usmHMACSHAAuthProtocol elif v3_authProtocol_str == "usmNoAuthProtocol": v3_authProtocol = cmdgen.usmNoAuthProtocol else: v3_authProtocol = cmdgen.usmNoAuthProtocol if v3_privProtocol_str == "usmDESPrivProtocol": v3_privProtocol = cmdgen.usmDESPrivProtocol elif v3_privProtocol_str == "usm3DESEDEPrivProtocol": v3_privProtocol = cmdgen.usm3DESEDEPrivProtocol elif v3_privProtocol_str == "usmAesCfb128Protocol": v3_privProtocol = cmdgen.usmAesCfb128Protocol elif v3_privProtocol_str == "usmAesCfb192Protocol": v3_privProtocol = cmdgen.usmAesCfb192Protocol elif v3_privProtocol_str == "usmAesCfb256Protocol": v3_privProtocol = cmdgen.usmAesCfb256Protocol elif v3_privProtocol_str == "usmNoPrivProtocol": v3_privProtocol = cmdgen.usmNoPrivProtocol else: v3_privProtocol = cmdgen.usmNoPrivProtocol #object names to poll object_names = config.get("object_names") if not object_names is None: oid_args = map(str, object_names.split(",")) #trim any whitespace using a list comprehension oid_args = [x.strip(' ') for x in oid_args] #GET BULK params do_bulk = int(config.get("do_bulk_get", 0)) split_bulk_output = int(config.get("split_bulk_output", 0)) non_repeaters = int(config.get("non_repeaters", 0)) max_repetitions = int(config.get("max_repetitions", 25)) #TRAP listener params listen_traps = int(config.get("listen_traps", 0)) #some backwards compatibility gymnastics if snmp_mode == 'traps': listen_traps = 1 trap_port = int(config.get("trap_port", 162)) trap_host = config.get("trap_host", "localhost") #MIBs to load mib_names = config.get("mib_names") mib_names_args = None if not mib_names is None: mib_names_args = map(str, mib_names.split(",")) #trim any whitespace using a list comprehension mib_names_args = [x.strip(' ') for x in mib_names_args] #load in custom MIBS cmdGen = cmdgen.CommandGenerator() mibBuilder = cmdGen.snmpEngine.msgAndPduDsp.mibInstrumController.mibBuilder mibSources = (builder.DirMibSource(mib_egg_dir), ) for filename in os.listdir(mib_egg_dir): if filename.endswith(".egg"): mibSources = mibSources + (builder.ZipMibSource(filename), ) mibSources = mibBuilder.getMibSources() + mibSources mibBuilder.setMibSources(*mibSources) if mib_names_args: mibBuilder.loadModules(*mib_names_args) global mibView mibView = view.MibViewController(mibBuilder) if listen_traps: if snmp_version == "1" or snmp_version == "2C": trapThread = TrapThread(trap_port, trap_host, ipv6) trapThread.start() if snmp_version == "3": trapThread = V3TrapThread(trap_port, trap_host, ipv6, v3_securityName, v3_authKey, v3_authProtocol, v3_privKey, v3_privProtocol) trapThread.start() if not (object_names is None) and not (destination is None): try: if ipv6: transport = cmdgen.Udp6TransportTarget((destination, port)) else: transport = cmdgen.UdpTransportTarget((destination, port)) mp_model_val = 1 if snmp_version == "1": mp_model_val = 0 if snmp_version == "3": security_object = cmdgen.UsmUserData( v3_securityName, authKey=v3_authKey, privKey=v3_privKey, authProtocol=v3_authProtocol, privProtocol=v3_privProtocol) else: security_object = cmdgen.CommunityData(communitystring, mpModel=mp_model_val) while True: if do_bulk and not snmp_version == "1": try: errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.bulkCmd( security_object, transport, non_repeaters, max_repetitions, *oid_args, lookupNames=True, lookupValues=True) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Exception with bulkCmd to %s:%s: %s" % (destination, port, str(e))) time.sleep(float(snmpinterval)) continue else: try: errorIndication, errorStatus, errorIndex, varBinds = cmdGen.getCmd( security_object, transport, *oid_args, lookupNames=True, lookupValues=True) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Exception with getCmd to %s:%s: %s" % (destination, port, str(e))) time.sleep(float(snmpinterval)) continue if errorIndication: logging.error(errorIndication) elif errorStatus: logging.error(errorStatus) else: if do_bulk: handle_output(varBindTable, destination, table=True, split_bulk_output=split_bulk_output) else: handle_output(varBinds, destination, table=False, split_bulk_output=split_bulk_output) time.sleep(float(snmpinterval)) except: # catch *all* exceptions e = sys.exc_info()[1] logging.error("Looks like an error: %s" % str(e)) sys.exit(1)