def reboot_sequence(iterations, ip): """ iterations and IP are passed in via the .txt file referred to in initial CLI. """ try: while True: number = (int( input('Enter the number of iterations you would ike to run: ')) ) print(number) except EOFError: pass print("The End") sys.exit(0) #print("WTF!!") cs = cofra.SwitchUpdate(ip) iteration = iterations while iterations >= 1: cs.reboot_reconnect() iterations -= 1 cons_out = anturlar.fos_cmd("lsanzoneshow -s | grep Invalid") print(cons_out) print("NUMBER OF ITERATIONS LEFT: %s" % iterations) print("Numer of iterations run without error is %s" % iteration) sys.exit(0)
def test_cofra_functions(): su = cofra.SwitchUpdate() #a = fcri.__getportlist__("EX-Port") #b = fcri.all_ex_ports_with_edge_fid() print("1111111111111111111111111111111") #b = su.playback_add_ports() #b = su.switch_power_off_on("root", "password") print("2222222222222222222222222222222") print(b) sys.exit()
def main(): global tn ############################################################################### #### #### #### ############################################################################### pa = parse_args(sys.argv) #print(pa) #print(pa.chassis_name) #print(pa.ipaddr) #print(pa.quiet) #print(pa.verbose) #print(pa.firmware) #print("@"*40) #sys.exit() ########################################################################## ########################################################################## ### ### hold the ip address from the command line ### if pa.ipaddr: pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd) fi = anturlar.FabricInfo() si = anturlar.SwitchInfo() su = cofra.SwitchUpdate() fcr = anturlar.FcrInfo() if pa.fabwide: ipaddr_switch = fi.ipv4_list() elif pa.csvall: ipaddr_switch = get_ip_from_file(pa.chassis_name) elif pa.fcrwide: anturlar.fos_cmd("setcontext %s" % fcr.base_check()) ipaddr_switch = fcr.fcr_fab_wide_ip() else: ipaddr_switch = [pa.ipaddr] anturlar.close_tel() #### pass ip(s)to login procedure #### and write the file ################################################################################################## # Manual list of switches to run suppportftp against. Entire csv list is printed out above but the # list below overwries it. # This keeps bombing on AMP switch IP (not included below). ################################################################################################## ip_no_amp = [ '10.38.36.240', '10.38.36.10', '10.38.36.33', '10.38.36.158', '10.38.36.249', '10.38.36.102', '10.38.36.246', '10.38.36.250', '10.38.36.98', '10.38.36.125', '10.38.36.25', '10.38.36.24', '10.38.36.111', '10.38.36.95', '10.38.36.85', '10.38.36.112' ] for i in ip_no_amp: try: tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd) except OSError: print("Switch %s not available" % i) nos = si.nos_check() if not nos: anturlar.fos_cmd( "supportftp -s -h 10.39.2.171 -u ftp1 -p ftp2 -d ssaves -l ftp" ) anturlar.fos_cmd("supportftp -e") anturlar.fos_cmd("supportftp -t 8") anturlar.fos_cmd( "tsclockserver 10.38.2.80; tstimezone America/Denver") anturlar.fos_cmd("echo Y | reboot") #anturlar.fos_cmd("tsclockserver LOCL") else: print("\n" + "@" * 40) print('\nTHIS IS A NOS SWITCH> SKIPPING') print("\n" + "@" * 40) pass # tn = su.reboot_reconnect() anturlar.close_tel() sys.exit()
def main(): global tn ############################################################################### #### #### #### ############################################################################### pa = parse_args(sys.argv) #print(pa) #print(pa.chassis_name) #print(pa.ipaddr) #print(pa.quiet) #print(pa.verbose) #print(pa.firmware) #print("@"*40) #sys.exit() ########################################################################## ########################################################################## ### ### hold the ip address from the command line ### if pa.ipaddr: pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd) fi = anturlar.FabricInfo() si = anturlar.SwitchInfo() su = cofra.SwitchUpdate() fcr = anturlar.FcrInfo() if pa.fabwide: ipaddr_switch = fi.ipv4_list() elif pa.csvall: ipaddr_switch = get_ip_from_file(pa.chassis_name) elif pa.fcrwide: anturlar.fos_cmd("setcontext %s" % fcr.base_check()) ipaddr_switch = fcr.fcr_fab_wide_ip() else: ipaddr_switch = [pa.ipaddr] anturlar.close_tel() #### pass ip(s)to login procedure #### and write the file for i in ipaddr_switch: try: ###New tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd) except OSError: ##New print("Switch %s not available" % i) ##New nos = si.nos_check() if not nos: anturlar.fos_cmd( "supportftp -s -h 10.38.35.131 -u ftp1 -p ftp2 -d ssaves -l ftp" ) anturlar.fos_cmd("supportftp -e") anturlar.fos_cmd("supportftp -t 8") anturlar.fos_cmd( "tsclockserver 10.38.2.80; tstimezone America/Denver") #anturlar.fos_cmd("echo Y | reboot") #anturlar.fos_cmd("tsclockserver LOCL") else: print("\n" + "@" * 40) print('\nTHIS IS A NOS SWITCH> SKIPPING') print("\n" + "@" * 40) pass tn = su.reboot_reconnect() anturlar.close_tel() sys.exit()
def main(): global tn #### varable for telnet session ####################################################################################################################### #### #### #### ####################################################################################################################### pa = parse_args(sys.argv) print(pa) print(pa.ipaddr) print(pa.quiet) print(pa.verbose) print(pa.cmdprompt) print("@" * 40) ################################################################################################################### ################################################################################################################### #### #### if user enter ip address then get the chassisname from the #### SwitchMatrix file #### then get the info from the SwitchMatrix file using the Chassis Name #### #### #### if pa.ipaddr: print("do IP steps") pa.chassis_name = console_info_from_ip(pa.ipaddr) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] console_ip_bkup = cons_info[2] console_port_bkup = cons_info[3] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] ipaddr_switch = get_ip_from_file(pa.chassis_name) steps_to_run = pa.steps fid_to_compare = 128 fid_to_compare = pa.fid ################################################################################################################### #### if the user does not enter a value for which steps to run prompt for user input value #### if not steps_to_run: # pa.start = user_start() steps_to_run = pa.start = user_start() tn = anturlar.connect_tel_noparse(ipaddr_switch, user_name, usr_psswd) ################################################################################################################### #### #### configure some settings that are not defualt to confirm they remain after disruptions #### cons_out = send_cmd("creditrecovmode --cfg onLrThresh") cons_out = send_cmd("creditrecovmode --cfg onLrThresh -lrthreshold 7") cons_out = send_cmd("creditrecovmode --fe_crdloss off") cons_out = send_cmd("creditrecovmode --be_crdloss off") cons_out = send_cmd("creditrecovmode --be_losync off") cons_out = send_cmd("creditrecovmode --fault edgeblade") ################################################################################################################### #### #### capture teh configuration file if the user selected 1 or 3 #### if steps_to_run == 1 or steps_to_run == 3: # cons_out = anturlar.fos_cmd("mapspolicy --enable dflt_base_policy") # cons_out = anturlar.fos_cmd("mapspolicy --enable dflt_aggressive_policy") switch_info = capture_switch_info("compare_orig", fid_to_compare) ################################################################################################################### #### path to the first file to compare # switch_data_0 = "logs/Switch_Info_cudc%s_compare_orig.txt" % pa.ipaddr #switch_data_0 = "logs/Switch_Info_cudc%s_compare_orig.txt" % ipaddr_switch switch_data_0 = "/home/runfromhere/logs/Switch_Info_cudc%s_compare_orig.txt" % ipaddr_switch liabhar.JustSleep(10) ################################################################################################################### ################################################################################################################### ################################################################################################################### #### #### do configupload or other test steps here #### make other changes here before configupload or other commands #### ################################################################################################################### #### #### REBOOT and RECONNECT WAIT 60 SECONDS and CONTINUE #### print("START Switch Update Class") liabhar.JustSleep(10) pp = cofra.SwitchUpdate() # tn = pp.reboot_reconnect() # liabhar.count_down(60) ################################################################################################################### #### #### hafailover or hareboot on pizza box #### call the failover function from cofra and send the number of failovers #### print("START HA FAILOVER") liabhar.JustSleep(10) tn = cofra.ha_failover(100) liabhar.count_down(600) ################################################################################################################### #### #### power cycle slots #### ss = anturlar.SwitchInfo() slot_list = ss.blades(True) #### skip if switch is a pizza box # if "not a d" not in slot_list: # pc_result = slot_pwr_cycle(slot_list) # else: # print("NOT A DIRECTOR SO PASSING SLOT POWER CYCLE TEST") # #### #### #### other interuptions #### #### ################################################################################################################### ################################################################################################################### ################################################################################################################### if steps_to_run == 2 or steps_to_run == 3: liabhar.JustSleep(10) liabhar.count_down(360) # cons_out = anturlar.fos_cmd("setcontext 128") # cons_out = anturlar.fos_cmd("mapspolicy --enable dflt_base_policy") # cons_out = anturlar.fos_cmd("mapspolicy --enable dflt_aggressive_policy") switch_info = capture_switch_info("compare", fid_to_compare) ################################################################################################################### #### path to the second file to compare switch_data_1 = "logs/Switch_Info_cudc%s_compare.txt" % ipaddr_switch liabhar.cls() #### compare the two files print("#" * 80) print("#" * 80) print("#######") print("####### @@@@@ @@@@@ @@@@@ @ @ @ @@@@@ @ ") print("####### @ @ @ @ @ @ @ @ @ ") print("####### @@@ @@@@ @@@@ @ @ @ @ @ ") print("####### @ @ @ @ @ @ @ @ ") print("####### @ @ @@@@@ @@@@@ @@@ @@@@@ @ @ ") print("#" * 80) print("#" * 80) diff_f = liabhar.file_diff(switch_data_0, switch_data_1) print("#" * 80) print("#" * 80) print("#" * 80) print("#" * 80) print("Result ") print(diff_f) ################################################################################################################### #### put additional commands here before disconnecting from telnet #### # cons_out = anturlar.fos_cmd("mapsdb --show all") # print(cons_out) # cons_out = anturlar.fos_cmd("mapspolicy --enable dflt_base_policy") #cons_out = anturlar.fos_cmd("mapspolicy --enable Nervio") anturlar.close_tel() dt = liabhar.dateTimeStuff() date_is = dt.current() print(date_is) print(type(steps_to_run)) print(steps_to_run)
def main(): global tn ############################################################################### #### #### #### ############################################################################### pa = parse_args(sys.argv) #print(pa) #print(pa.chassis_name) #print(pa.ipaddr) #print(pa.quiet) #print(pa.verbose) #print(pa.firmware) #print("@"*40) #sys.exit() ########################################################################## ########################################################################## ### ### hold the ip address from the command line ### #try: # ipaddr_test = ipaddress.ip_address(pa.ipaddr) # #print (ipaddr_test) #except ValueError: # print("\nPLEASE CHECK YOUR IP ADDRESS AND TRY AGAIN") # sys.exit() if pa.ipaddr: pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd) fi = anturlar.FabricInfo() si = anturlar.SwitchInfo() fcr = anturlar.FcrInfo() if pa.fabwide: ipaddr_switch = fi.ipv4_list() #print(ipaddr_switch) elif pa.csvall: ipaddr_switch = get_ip_from_file(pa.chassis_name) elif pa.fcrwide: anturlar.fos_cmd("setcontext %s" % fcr.base_check()) ipaddr_switch = fcr.fcr_fab_wide_ip() else: ipaddr_switch = [pa.ipaddr] anturlar.close_tel() #### pass ip(s)to login procedure #### and write the file ff = "" f = ("%s%s%s" % ("logs/Switch_Info_", pa.ipaddr, "_restore.txt")) #f = ("logs/Switch_Info_10.38.134.66_VF_Wedge.txt") #f = ("logs/Switch_Info_10.38.134.66_for_playback.txt") print("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$") print(f) try: with open(f, 'r') as file: ff = file.read() except IOError: print("\n\nThere was a problem opening the file:", f) sys.exit() print(ff) #sys.exit() #for i in ipaddr_switch: # tn = anturlar.connect_tel_noparse(i,user_name,usr_psswd) # nos = si.nos_check() # if not nos: # sw_dict = cofra.get_info_from_the_switch() # switch_ip = sw_dict["switch_ip"] # sw_name = sw_dict["switch_name"] # sw_chass_name = sw_dict["chassis_name"] # sw_director_or_pizza = sw_dict["director"] # sw_domains = sw_dict["domain_list"] # sw_ls_list = sw_dict["ls_list"] # sw_base_fid = sw_dict["base_sw"] # sw_xisl = sw_dict["xisl_state"] # sw_type = sw_dict["switch_type"] # sw_license = sw_dict["license_list"] # sw_vf_setting = sw_dict["vf_setting"] # sw_fcr_enabled = sw_dict["fcr_enabled"] # sw_port_list = sw_dict["port_list"] # # print("\n"*20) # print("SWITCH IP : %s " % switch_ip) # print("SWITCH NAME : %s " % sw_name) # print("CHASSIS NAME : %s " % sw_chass_name) # print("DIRECTOR : %s " % sw_director_or_pizza) # print("SWITCH DOMAINS : %s " % sw_domains) # print("LOGICAL SWITCH LIST : %s " % sw_ls_list) # print("BASE FID : %s " % sw_base_fid) # print("XISL STATE : %s " % sw_xisl) # print("SWITCH TYPE : %s " % sw_type) # print("LICENSE LIST : %s " % sw_license) # print("VF SETTING : %s " % sw_vf_setting) # print("FCR SETTING : %s " % sw_fcr_enabled) # print("PORT LIST : %s " % sw_port_list) # print("@"*40) # print("CONSOLE INFO : %s " % cons_info) # print("@"*40) # print("POWER POLE INFO : %s " % power_pole_info) # print("@"*40) # print("\nSwitch_Info has been written this file in logs/Switch_Info_for_playback_%s.txt\n" % switch_ip) # print("@"*40) # else: # print("\n"+"@"*40) # print('\nTHIS IS A NOS SWITCH> SKIPPING') # print("\n"+"@"*40) # pass #anturlar.close_tel() #sys.exit() ############################################################################### #### #### close telnet connection and #### connect to the console #### ############################################################################### tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd) cc = cofra.SwitchUpdate() cons_out = cc.playback_licenses() cons_out = cc.playback_ls() cons_out = cc.playback_switch_names() cons_out = cc.playback_switch_domains() cons_out = cc.playback_add_ports() cons_out = cc.playback_fosconfig_fcr() tn = cc.reboot_reconnect() cons_out = anturlar.fos_cmd("switchshow") print(cons_out) anturlar.close_tel()
def main(): global tn #### varable for telnet session ####################################################################################################################### #### #### #### ####################################################################################################################### pa = parse_args(sys.argv) print(pa) #print(pa.chassis_name) print(pa.ipaddr) print(pa.quiet) print(pa.verbose) #print(pa.firmware) print(pa.cmdprompt) print("@"*40) ################################################################################################################### ################################################################################################################### #### #### if user enter ip address then get the chassisname from the #### SwitchMatrix file #### then get the info from the SwitchMatrix file using the Chassis Name #### #### #### if pa.ipaddr: print("do IP steps") pa.chassis_name = console_info_from_ip(pa.ipaddr) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] console_ip_bkup = cons_info[2] console_port_bkup = cons_info[3] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] ipaddr_switch = get_ip_from_file(pa.chassis_name) steps_to_run = pa.steps fid_to_compare = 128 ### later we will capture info for all fids ################################################################################################################### #### if the user does not enter a value for which steps to run prompt for user input value #### if not steps_to_run: #pa.start = user_start() steps_to_run = pa.start = user_start() tn = anturlar.connect_tel_noparse(ipaddr_switch,user_name,usr_psswd) ################################################################################################################### #### #### configure some settings that are not defualt to confirm they remain after disruptions #### cons_out = send_cmd("creditrecovmode --cfg onLrThresh") cons_out = send_cmd("creditrecovmode --cfg onLrThresh -lrtthreshold 7") cons_out = send_cmd("creditrecovmode --fe_crdloss off") cons_out = send_cmd("creditrecovmode --be_crdloss off") cons_out = send_cmd("creditrecovmode --be_losync off") cons_out = send_cmd("creditrecovmode --fault edgeblade") ################################################################################################################### #### #### capture teh configuration file if the user selected 1 or 3 #### if steps_to_run == 1 or steps_to_run == 3: switch_info = capture_switch_info("compare_orig", fid_to_compare) ################################################################################################################### #### path to the first file to compare #switch_data_0 = "logs/Switch_Info_cudc%s_compare_orig.txt" % pa.ipaddr switch_data_0 = "logs/Switch_Info_cudc%s_compare_orig.txt" % ipaddr_switch liabhar.JustSleep(10) ################################################################################################################### ################################################################################################################### ################################################################################################################### #### #### do configupload or other test steps here #### make other changes here before configupload or other commands #### ################################################################################################################### #### #### #### pp = cofra.SwitchUpdate() ################################################################################################################### #### #### #### #### cd = cofra.cfgupload(pa.ftp_ipaddress, pa.ftp_username,pa.ftp_password,pa.config_path) liabhar.count_down(120) mc = make_changes() cdd = cofra.cfgdownload(pa.ftp_ipaddress, pa.ftp_username,pa.ftp_password,cd) liabhar.count_down(360) ################################################################################################################### #### #### #### #### #### #### #### other actions here #### #### ################################################################################################################### ################################################################################################################### ################################################################################################################### if steps_to_run == 2 or steps_to_run == 3: # liabhar.JustSleep(10) liabhar.count_down(60) switch_info = capture_switch_info("compare", fid_to_compare) ################################################################################################################### #### path to the second file to compare switch_data_1 = "logs/Switch_Info_cudc%s_compare.txt" % ipaddr_switch liabhar.cls() #### compare the two files print("#"*80) print("#"*80) print("#######") print("####### @@@@@ @@@@@ @@@@@ @ @ @ @@@@@ @ ") print("####### @ @ @ @ @ @ @ @ @ ") print("####### @@@ @@@@ @@@@ @ @ @ @ @ ") print("####### @ @ @ @ @ @ @ @ ") print("####### @ @ @@@@@ @@@@@ @@@ @@@@@ @ @ ") print("#"*80) print("#"*80) diff_f = liabhar.file_diff(switch_data_0,switch_data_1) print("#"*80) print("#"*80) print("#"*80) print("#"*80) print("Result ") print(diff_f) ################################################################################################################### #### #### disconnecting from telnet #### ################################################################################################################### anturlar.close_tel()
def main(): global tn ############################################################################### #### #### #### ############################################################################### pa = parse_args(sys.argv) print(pa) #print(pa.chassis_name) #print(pa.ipaddr) #print(pa.quiet) #print(pa.verbose) #print(pa.firmware) print("@" * 40) #sys.exit() ########################################################################## ########################################################################## ### ### hold the ip address from the command line ### if pa.ipaddr: pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd) fi = anturlar.FabricInfo() si = anturlar.SwitchInfo() fcr = anturlar.FcrInfo() if pa.fabwide: ipaddr_switch = fi.ipv4_list() #print(ipaddr_switch) elif pa.csvall: ipaddr_switch = get_ip_from_file(pa.chassis_name) elif pa.fcrwide: anturlar.fos_cmd("setcontext %s" % fcr.base_check()) ipaddr_switch = fcr.fcr_fab_wide_ip() else: ipaddr_switch = [pa.ipaddr] anturlar.close_tel() #### pass ip(s)to login procedure #### and write the file for i in ipaddr_switch: tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd) nos = si.nos_check() if not nos: def ex_deconfig(): """ Find all EX-Ports AND VEX-Ports on either director or pizzabox and deconfigure. This parses "portcfgshow" command for any EX-Port, online or not, and deconfigures. This includes VEX ports as well. """ si = anturlar.SwitchInfo() anturlar.fos_cmd("switchdisable") portlist = si.all_ports() if si.am_i_director: for i in portlist: slot = i[0] port = i[1] pattern = re.compile(r'(?:\EX\sPort\s+)(?P<state> ON)') cmd = anturlar.fos_cmd("portcfgshow %a/%a" % (slot, port)) ex = pattern.search(cmd) if ex: anturlar.fos_cmd("portcfgexport %s/%s %s" % (slot, port, "-a 2")) anturlar.fos_cmd("portcfgvexport %s/%s %s" % (slot, port, "-a 2")) else: for i in portlist: print(i) port = i[1] pattern = re.compile(r'(?:\EX\sPort\s+)(?P<state> ON)') cmd = anturlar.fos_cmd("portcfgshow %a" % port) ex = pattern.search(cmd) if ex: anturlar.fos_cmd("portcfgexport %s %s" % (port, "-a 2")) anturlar.fos_cmd("portcfgvexport %s %s" % (port, "-a 2")) cmd_cap = anturlar.fos_cmd("switchenable") print('\n\nAll EX_ports found are now deconfigured.') #return(cmd_cap) # sw_dict = cofra.get_info_from_the_switch() # switch_ip = sw_dict["switch_ip"] # sw_name = sw_dict["switch_name"] # sw_chass_name = sw_dict["chassis_name"] # sw_director_or_pizza = sw_dict["director"] # sw_domains = sw_dict["domain_list"] # sw_ls_list = sw_dict["ls_list"] # sw_base_fid = sw_dict["base_sw"] # sw_xisl = sw_dict["xisl_state"] # sw_type = sw_dict["switch_type"] # sw_license = sw_dict["license_list"] # sw_vf_setting = sw_dict["vf_setting"] # sw_fcr_enabled = sw_dict["fcr_enabled"] # sw_port_list = sw_dict["port_list"] # # print("\n"*20) # print("SWITCH IP : %s " % switch_ip) # print("SWITCH NAME : %s " % sw_name) # print("CHASSIS NAME : %s " % sw_chass_name) # print("DIRECTOR : %s " % sw_director_or_pizza) # print("SWITCH DOMAINS : %s " % sw_domains) # print("LOGICAL SWITCH LIST : %s " % sw_ls_list) # print("BASE FID : %s " % sw_base_fid) # print("XISL STATE : %s " % sw_xisl) # print("SWITCH TYPE : %s " % sw_type) # print("LICENSE LIST : %s " % sw_license) # print("VF SETTING : %s " % sw_vf_setting) # print("FCR SETTING : %s " % sw_fcr_enabled) # print("PORT LIST : %s " % sw_port_list) # print("@"*40) # print("CONSOLE INFO : %s " % cons_info) # print("@"*40) # print("POWER POLE INFO : %s " % power_pole_info) # print("@"*40) # print("\nSwitch_Info has been written this file in logs/Switch_Info_for_playback_%s.txt\n" % switch_ip) # print("@"*40) else: print("\n" + "@" * 40) print('\nTHIS IS A NOS SWITCH> SKIPPING') print("\n" + "@" * 40) pass anturlar.close_tel() sys.exit() ############################################################################### #### #### close telnet connection and #### connect to the console #### ############################################################################### cc = cofra.SwitchUpdate() cons_out = cc.playback_licenses() cons_out = cc.playback_ls() cons_out = cc.playback_switch_names() cons_out = cc.playback_switch_domains() cons_out = cc.playback_add_ports() tn = cc.reboot_reconnect() cons_out = anturlar.fos_cmd("switchshow") print(cons_out) anturlar.close_tel()
def main(): global tn ############################################################################### #### #### #### ############################################################################### pa = parse_args(sys.argv) #print(pa) #print(pa.chassis_name) #print(pa.ipaddr) #print(pa.quiet) #print(pa.verbose) #print(pa.firmware) #print("@"*40) #sys.exit() ########################################################################## ########################################################################## ### ### hold the ip address from the command line ### #try: # ipaddr_test = ipaddress.ip_address(pa.ipaddr) # #print (ipaddr_test) #except ValueError: # print("\nPLEASE CHECK YOUR IP ADDRESS AND TRY AGAIN") # sys.exit() if pa.ipaddr: pa.chassis_name = console_info_from_ip(pa.ipaddr, pa.chassis_name) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] tn = anturlar.connect_tel_noparse(pa.ipaddr, user_name, usr_psswd) fi = anturlar.FabricInfo() si = anturlar.SwitchInfo() fcr = anturlar.FcrInfo() if pa.fabwide: ipaddr_switch = fi.ipv4_list() #print(ipaddr_switch) elif pa.csvall: ipaddr_switch = get_ip_from_file(pa.chassis_name) elif pa.fcrwide: anturlar.fos_cmd("setcontext %s" % fcr.base_check()) ipaddr_switch = fcr.fcr_fab_wide_ip() else: ipaddr_switch = [pa.ipaddr] anturlar.close_tel() #### pass ip(s)to login procedure #### and write the file for i in ipaddr_switch: try: ###New tn = anturlar.connect_tel_noparse(i, user_name, usr_psswd) except OSError: ##New print("Switch %s not available" % i) ##New nos = si.nos_check() if not nos: sw_dict = cofra.get_info_from_the_switch("restore") switch_ip = sw_dict["switch_ip"] sw_name = sw_dict["switch_name"] sw_chass_name = sw_dict["chassis_name"] sw_director_or_pizza = sw_dict["director"] sw_domains = sw_dict["domain_list"] sw_ls_list = sw_dict["ls_list"] sw_base_fid = sw_dict["base_sw"] sw_xisl = sw_dict["xisl_state"] sw_type = sw_dict["switch_type"] sw_license = sw_dict["license_list"] sw_vf_setting = sw_dict["vf_setting"] sw_fcr_enabled = sw_dict["fcr_enabled"] sw_port_list = sw_dict["port_list"] sw_ex_port_list = sw_dict["ex_ports"] print("\n" * 20) print("SWITCH IP : %s " % switch_ip) print("SWITCH NAME : %s " % sw_name) print("CHASSIS NAME : %s " % sw_chass_name) print("DIRECTOR : %s " % sw_director_or_pizza) print("SWITCH DOMAINS : %s " % sw_domains) print("LOGICAL SWITCH LIST : %s " % sw_ls_list) print("BASE FID : %s " % sw_base_fid) print("XISL STATE : %s " % sw_xisl) print("SWITCH TYPE : %s " % sw_type) print("LICENSE LIST : %s " % sw_license) print("VF SETTING : %s " % sw_vf_setting) print("FCR SETTING : %s " % sw_fcr_enabled) print("PORT LIST : %s " % sw_port_list) print("EX_PORT_LIST : %s " % sw_ex_port_list) print("@" * 40) print("CONSOLE INFO : %s " % cons_info) print("@" * 40) print("POWER POLE INFO : %s " % power_pole_info) print("@" * 40) print( "\nSwitch_Info has been written this file in logs/test/Switch_Info_%s_restore.txt\n" % switch_ip) print("@" * 40) else: print("\n" + "@" * 40) print('\nTHIS IS A NOS SWITCH> SKIPPING') print("\n" + "@" * 40) pass anturlar.close_tel() sys.exit() ############################################################################### #### #### close telnet connection and #### connect to the console #### ############################################################################### cc = cofra.SwitchUpdate() cons_out = cc.playback_licenses() cons_out = cc.playback_ls() cons_out = cc.playback_switch_names() cons_out = cc.playback_switch_domains() cons_out = cc.playback_add_ports() tn = cc.reboot_reconnect() cons_out = anturlar.fos_cmd("switchshow") print(cons_out) anturlar.close_tel()
def main(): global tn ####################################################################################################################### #### #### #### ####################################################################################################################### pa = parse_args(sys.argv) #print(pa) print(pa.chassis_name) print(pa.ipaddr) print(pa.quiet) print(pa.verbose) print(pa.firmware) print(pa.cmdprompt) print("@" * 40) #sys.exit(0) ################################################################################################################### ################################################################################################################### #### #### if user enter ip address then get the chassisname from the #### SwitchMatrix file #### then get the info from the SwitchMatrix file using the Chassis Name #### #### the only args required are firmware and ip or chassisname #### if pa.ipaddr: print("do IP steps") pa.chassis_name = console_info_from_ip(pa.ipaddr) cons_info = console_info(pa.chassis_name) console_ip = cons_info[0] console_port = cons_info[1] console_ip_bkup = cons_info[2] console_port_bkup = cons_info[3] power_pole_info = pwr_pole_info(pa.chassis_name) usr_pass = get_user_and_pass(pa.chassis_name) user_name = usr_pass[0] usr_psswd = usr_pass[1] ipaddr_switch = get_ip_from_file(pa.chassis_name) ################################################################################################################### ################################################################################################################### #### if the switch is NOT at the command prompt #### then get all the info from the switch and save to a file #### cofra.get_info_from_the_switch creates a file #### #### If the switch is at the command prompt #### then args -cp must be used #### if not pa.cmdprompt: try: tn = anturlar.connect_tel_noparse(ipaddr_switch, user_name, usr_psswd) except OSError: print( "\n If the Switch is at the command prompt use the -cp and -t switch" ) print( "\n ./APM/switch_playback.py -cp -t <no> -c <chassisname> <firmware>" ) print("\n\n Popular switch types are:\n") print(" Type Model\n") print( "\t62 DCX\n\t64 5300\n\t66 5100\n\t71 300 \n" ) print( "\t77 DCX-4S\n\t83 7800\n\t109 6510\n\t118 6505\n" ) print("\t120 DCX 8510-8\n\t121 DCX 8510-4") print("\t133 6520/Odin\n\t148 Skybolt ") print("\n" * 5) sys.exit() sw_dict = cofra.get_info_from_the_switch() my_ip = sw_dict["switch_ip"] my_cp_ip_list = sw_dict["cp_ip_list"] sw_name = sw_dict["switch_name"] sw_chass_name = sw_dict["chassis_name"] sw_director_or_pizza = sw_dict["director"] sw_domains = sw_dict["domain_list"] sw_ls_list = sw_dict["ls_list"] sw_base_fid = sw_dict["base_sw"] sw_xisl = sw_dict["xisl_state"] sw_type = sw_dict["switch_type"] sw_license = sw_dict["license_list"] sw_vf_setting = sw_dict["vf_setting"] sw_fcr_enabled = sw_dict["fcr_enabled"] sw_port_list = sw_dict["port_list"] print("\n" * 20) print("SWITHC IP : %s " % my_ip) print("CP IP List : %s " % my_cp_ip_list) print("SWITCH NAME : %s " % sw_name) print("CHASSIS NAME : %s " % sw_chass_name) print("DIRECTOR : %s " % sw_director_or_pizza) print("SWITCH DOMAINS : %s " % sw_domains) print("LOGICAL SWITCH LIST : %s " % sw_ls_list) print("BASE FID : %s " % sw_base_fid) print("XISL STATE : %s " % sw_xisl) print("SWITCH TYPE : %s " % sw_type) print("LICENSE LIST : %s " % sw_license) print("VF SETTING : %s " % sw_vf_setting) print("FCR SETTING : %s " % sw_fcr_enabled) print("PORT LIST : %s " % sw_port_list) print("@" * 40) print("@" * 40) print("CONSOLE INFO : %s " % cons_info) print("\n") print("POWER POLE INFO : %s " % power_pole_info) ################################################################################################################### #### #### close telnet connection #### ################################################################################################################### anturlar.close_tel() else: sw_type = pa.switchtype my_ip = ipaddr_switch sw_director_or_pizza = False my_cp_ip_list = [] ################################################################################################################### ################################################################################################################### #### #### if I am Director then get the CP0 and CP1 IP addresses #### before connecting to the console #### ################################################################################################################### ################################################################################################################### print("@" * 40) print("switch is a director %s " % sw_director_or_pizza) print("console_ip %s " % console_ip) print("console port %s " % console_port) print("user name is %s " % user_name) print("password %s " % usr_pass) print("console_ip backup %s " % console_ip_bkup) print("console port backup %s " % console_port_bkup) print("CP IP list (chassis CP0 CP1) %s " % my_cp_ip_list) if sw_director_or_pizza: print("CP0 %s " % my_cp_ip_list[1]) print("CP1 %s " % my_cp_ip_list[2]) #sys.exit() stop here for getting the switch info only ################################################################################################################### ################################################################################################################### #### #### if I am Director then connect to console 1 and find the cmdprompt #### then connect to console 2 and find the cmdprompt #### #### switch IP now needs to be the CP0 and CP1 values #### tn_list = [] if sw_director_or_pizza: tn_cp0 = connect_console(console_ip, user_name, usr_pass, console_port, 0) tn_cp1 = connect_console(console_ip_bkup, user_name, usr_pass, console_port_bkup, 0) #tn_list = [] tn_list.append(tn_cp0) tn_list.append(tn_cp1) for tn in tn_list: cons_out = send_cmd("switchshow") ####################################################################################################################### #### #### reboot and find the command prompt #### cnt = 1 if not pa.cmdprompt: for tn in tn_list: cons_out = stop_at_cmd_prompt(0) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print(cons_out) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) for tn in tn_list: cons_out = env_variables(sw_type, 0) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print(cons_out) load_kernel(sw_type, my_cp_ip_list[cnt], pa.firmware) cnt += 1 else: ########################################################################### #### im a pizza box ########################################################################### tn = connect_console(console_ip, user_name, usr_pass, console_port, 0) tn_list.append(tn) ####################################################################################################################### #### #### reboot and find the command prompt #### if not pa.cmdprompt: cons_out = stop_at_cmd_prompt(9) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print(cons_out) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) cons_out = env_variables(sw_type, 9) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print( "\n\n\n\n\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" ) print(cons_out) load_kernel(sw_type, my_ip, pa.firmware) ####################################################################################################################### ####################################################################################################################### #### this step is the same for director or pizza box #### #### turn each port off then turn each port on (otherwise the delay between did not power cycle the switch) #### ####################################################################################################################### try: for pp in range(0, len(power_pole_info), 2): print('POWERPOLE') print(power_pole_info[pp]) print(power_pole_info[pp + 1]) pwr_cycle(power_pole_info[pp], power_pole_info[pp + 1], "off") time.sleep(2) for pp in range(0, len(power_pole_info), 2): print('POWERPOLE') print(power_pole_info[pp]) print(power_pole_info[pp + 1]) pwr_cycle(power_pole_info[pp], power_pole_info[pp + 1], "on") time.sleep(2) except: if '' == power_pole_info[0]: print("\n" * 20) print("NO POWER POLE INFO FOUND ") print("HA " * 10) print("you have to walk to power cycle the switch") print("I will wait ") liabhar.JustSleep(30) else: print("POWER TOWER INFO") print(power_pole_info[0]) print(power_pole_info) liabhar.JustSleep(30) ####################################################################################################################### ####################################################################################################################### #### #### #### is there another way to tell if switch is ready ?? #### instead of waiting #### maybe looking at switch Domain and if it is uncomfirmed then switch is not ready #### ####################################################################################################################### ####################################################################################################################### #### #### ####################################################################################################################### print("\r\n" * 6) print("@" * 40) print("Close Console sessions and login via telnet") print("Sleep for a minute") print("\r\n" * 6) #liabhar.count_down(300) #time.sleep(360) #cons_out = sw_set_pwd_timeout(usr_psswd,10) #print("@"*40) #print("TN TN TN") #print(tn_list) #print("@"*40) for tn in tn_list: tn.close() liabhar.JustSleep(600) tn = anturlar.connect_tel_noparse(ipaddr_switch, user_name, "fibranne") cons_out = sw_set_pwd_timeout(usr_psswd, tn) #tn = anturlar.connect_tel_noparse(ipaddr_switch,user_name,usr_psswd) print("\r\n\r\nLICENSE ADD TO SWITCH \r\n\r\n") print(my_ip) cc = cofra.SwitchUpdate() cons_out = cc.playback_licenses() cons_out = cc.playback_ls() cons_out = cc.playback_switch_names() cons_out = cc.playback_switch_domains() cons_out = cc.playback_add_ports() tn = cc.reboot_reconnect() cons_out = anturlar.fos_cmd("switchshow") print(cons_out) cons_out = anturlar.fos_cmd("timeout 0") print(cons_out) anturlar.close_tel() #tn.write(b"exit\n") #tn.close() dt = liabhar.dateTimeStuff() date_is = dt.current() print(date_is)