Beispiel #1
0
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)
Beispiel #2
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()
Beispiel #3
0
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()
Beispiel #4
0
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)
Beispiel #6
0
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()
Beispiel #7
0
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()
Beispiel #8
0
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()
Beispiel #9
0
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()
Beispiel #10
0
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)