diff --git a/highTransitions.py b/highTransitions.py index d6d9be93b4cc1f2bb63050979707b59c5bdc0314..9003aec846fad3c2d969989b004a8aa37f80a3cb 100644 --- a/highTransitions.py +++ b/highTransitions.py @@ -33,41 +33,72 @@ print("Enter Password:") Apassword = getpass.getpass() creds = {"username": {Ausername}, "password": {Apassword}} -#policyrole = "wired_l1_game_dur-3142-2" - - for selectIP in file: ip_add = selectIP hostname = socket.getfqdn(ip_add) print(f"Login from: {hostname} {ip_add}") session = requests.session() - # create sessions object def get_logs(self): try: # Login to API and set initial Variables login = session.post(f"https://{self}/rest/v1/login", data=creds, verify=False) - transitions = 5000 + transitions = 10000 vsfMember = 1 Switch = 1 SwitchPort = 1 + # Check to see how many switches are in stack and convert to string get_vsf = session.get(f"https://{self}/rest/v10.04/system/vsf_members?attributes=id&depth=2&selector=status&count=true") vsfMember = re.findall(r'\d+',f"{get_vsf.json()}") str_vsfMember = str(vsfMember[0]) - #Run Program on all switches and ports to find High link trasitions. + # Check the model of the switch + get_model = session.get(f"https://{self}/rest/v10.04/system/subsystems/chassis,{Switch}?attributes=part_number_cfg&depth=4") + vsfModel = re.findall(r'\d+',f"{get_model.json()}") + + #Run Program on all switches and ports to find High link trasitions. while Switch <= int(str_vsfMember[0]): - while SwitchPort < 49: - get_log = session.get(f"https://{self}/rest/v10.04/system/interfaces/{Switch}%2F1%2F{SwitchPort}?attributes=link_resets&depth=2&selector=statistics") - LinkTransitions = re.findall(r'\d+',f"{get_log.json()}") - str_LinkTransitions = str(LinkTransitions[0]) - if transitions <= int(str_LinkTransitions): - print(f"Port: {Switch}/1/{SwitchPort} {str_LinkTransitions}") - SwitchPort += 1 - Switch += 1 + if f"{str(vsfModel)}" == "['661']" or f"{str(vsfModel)}" == "['659']": # run for all 48 port switchs + while SwitchPort < 49: + + get_log = session.get(f"https://{self}/rest/v10.04/system/interfaces/{Switch}%2F1%2F{SwitchPort}?attributes=link_resets&depth=2&selector=statistics") + LinkTransitions = re.findall(r'\d+',f"{get_log.json()}") + str_LinkTransitions = str(LinkTransitions[0]) + if transitions <= int(str_LinkTransitions): + + get_lldp = session.get(f"https://{self}/rest/v10.04/system/interfaces/{Switch}%2F1%2F{SwitchPort}/lldp_neighbors?attributes=neighbor_info&depth=4&selector=status&filter=") + lldpModel = f"{get_lldp.json()}" + split_lldpModel = lldpModel.split(", ") + count=3 + while count < len(split_lldpModel): # This handles errors when no lldp info is found. + final_lldp = split_lldpModel[3] + count += 1 + print(f"Port: {Switch}/1/{SwitchPort} {str_LinkTransitions} --- {final_lldp}") + + final_lldp = "No LLDP Info" # Default value if no lldp info is retreived + SwitchPort += 1 + Switch += 1 + SwitchPort = 1 + get_model = session.get(f"https://{self}/rest/v10.04/system/subsystems/chassis,{Switch}?attributes=part_number_cfg&depth=4") + vsfModel = re.findall(r'\d+',f"{get_model.json()}") + else: + while Switch <= int(str_vsfMember[0]): # Run for all 24 port switches + get_model = session.get(f"https://{self}/rest/v10.04/system/subsystems/chassis,{Switch}?attributes=part_number_cfg&depth=4") + vsfModel = re.findall(r'\d+',f"{get_model.json()}") + while SwitchPort < 25: + get_log = session.get(f"https://{self}/rest/v10.04/system/interfaces/{Switch}%2F1%2F{SwitchPort}?attributes=link_resets&depth=2&selector=statistics") + LinkTransitions = re.findall(r'\d+',f"{get_log.json()}") + str_LinkTransitions = str(LinkTransitions[0]) + if transitions <= int(str_LinkTransitions): + print(f"Port: {Switch}/1/{SwitchPort} {str_LinkTransitions}") + SwitchPort += 1 + Switch += 1 + SwitchPort = 1 + get_model = session.get(f"https://{self}/rest/v10.04/system/subsystems/chassis,{Switch}?attributes=part_number_cfg&depth=4") + vsfModel = re.findall(r'\d+',f"{get_model.json()}") logout = session.post(f"https://{self}/rest/v1/logout")