def backup_config(ip): folder = '%s/%s' % (strCFGFolder, s.time_now_folder()) Action(ip, telnet_port, passwd, FTP_port).backup(folder)
def setup_class(self): self.time = sun.TimeNow() self.timenow = time.localtime()
def backup_config_all(): folder = '%s/%s' % (strCFGFolder, s.time_now_folder()) for ip in list_engines_IP: Action(ip, telnet_port, passwd, FTP_port).backup(folder)
def sum_total_and_warning(self): lstSumTotal = list(self.sum_and_total()) intTotal = lstSumTotal[1] intWarningLevel = s.is_Warning(intTotal, tuplThresholdTotal) lstSumTotalWarning = lstSumTotal.append(intWarningLevel) return lstSumTotalWarning
def haap_interval_check(intInterval): t = s.Timing() t.add_interval(check_all_haap, intInterval) t.stt()
def get_trace(self, strBaseFolder, intTraceLevel): tn = self._TN_Conn connFTP = self._ftp() def _get_oddCommand(intTraceLevel): oddCMD = odd() if intTraceLevel == 1 or intTraceLevel == 2 or intTraceLevel == 3: oddCMD['Trace'] = 'ftpprep trace' if intTraceLevel == 2 or intTraceLevel == 3: oddCMD['Primary'] = 'ftpprep coredump primary all' if intTraceLevel == 3: oddCMD['Secondary'] = 'ftpprep coredump secondary all' return oddCMD else: print( 'Trace level must be: 1 or 2 or 3, please refer "Config.ini" ' ) def _get_trace_file(command, strTraceDes): # TraceDes = Trace Description def _get_trace_name(): result = tn.exctCMD(command) reTraceName = re.compile(r'(ftp_data_\d{8}_\d{6}.txt)') strTraceName = reTraceName.search(result) if strTraceName: return strTraceName.group() else: print('Generate trace "{}" file failed for "{}"'.format( strTraceDes, self._host)) trace_name = _get_trace_name() if trace_name: time.sleep(0.1) local_name = 'Trace_{}_{}.log'.format(self._host, strTraceDes) if connFTP.GetFile('mbtrace', '.', trace_name, local_name): print('Get trace "{:<10}" for "{}" completed ...'.format( strTraceDes, self._host)) return True else: print('Get trace "{:<10}" for engine "{}" failed!!!\ '.format(strTraceDes, self._host)) # s.ShowErr(self.__class__.__name__, # sys._getframe().f_code.co_name, # 'Get Trace "{:<10}" for Engine "{}" Failed!!!\ # '.format(strTraceDes, self._host)) oddCommand = _get_oddCommand(intTraceLevel) lstCommand = list(oddCommand.values()) lstDescribe = list(oddCommand.keys()) if s.GotoFolder(strBaseFolder): for i in range(len(lstDescribe)): try: if _get_trace_file(lstCommand[i], lstDescribe[i]): continue else: break except Exception as E: # s.ShowErr(self.__class__.__name__, # sys._getframe().f_code.co_name, # 'Get Trace "{}" Failed for Engine "{}",\ # Error:'.format(lstDescribe[i], self._host), # E) break time.sleep(0.1)
def home(): if request.args.get('trace'): TRACE = request.args.get('trace') haap.get_trace(TRACE, trace_level_cfg) else: pass if mode == 'rt': StatusHAAP = haap_rt_info_to_show() if sw_enable_status == 'yes': StatusSANSW = sansw_rt_info_to_show() else: StatusSANSW = 0 if StatusHAAP: StatusHAAP.sort(key=operator.itemgetter(0)) tlu_haap = s.time_now_to_show() status_warning = 0 else: tlu_haap = s.time_now_to_show() status_warning = 0 if StatusSANSW: StatusSANSW.sort(key=operator.itemgetter(0)) tlu_sansw = s.time_now_to_show() status_warning = 0 else: tlu_sansw = s.time_now_to_show() status_warning = 0 elif mode == 'db': lstWarningList = db.get_unconfirm_warning() if request.method == 'GET' and lstWarningList: error = 1 else: db.update_warning() error = 0 engine = haap_info_to_show() sansw = sansw_info_to_show() status_warning = db.get_unconfirm_warning() if engine: tlu_haap = engine[0] StatusHAAP = engine[1] StatusHAAP.sort(key=operator.itemgetter(0)) else: tlu_haap = s.time_now_to_show() StatusHAAP = [0] if sansw: tlu_sansw = sansw[0] StatusSANSW = sansw[1] StatusSANSW.sort(key=operator.itemgetter(0)) else: tlu_sansw = s.time_now_to_show() StatusSANSW = [0] return render_template("monitor.html", Title_HAAP=lstDescHAAP, Title_SANSW=lstDescSANSW, tlu_haap=tlu_haap, tlu_sansw=tlu_sansw, status_haap=StatusHAAP, status_sansw=StatusSANSW, status_warning=status_warning, interval_web_refresh=interval_web_refresh, sw_enable_status=sw_enable_status, VERSION=cs.VERSION)
def test_is_file(): assert sun.is_file('Sundry.py') == True assert sun.is_file('test_Sundry.py') == False
def test_is_folder(): assert sun.is_folder('test') == True assert sun.is_folder('pytest') == False
def test_is_trace_level(): assert sun.is_trace_level(0) == None assert sun.is_trace_level(1) == True
def test_is_IP(): assert sun.is_IP('10.203.1.1') == True assert sun.is_IP('6.6.6.256') == False
def test_is_Warning(): assert sun.is_Warning(500, 200) == True assert sun.is_Warning(500, 2000) == None assert sun.is_Warning(100, [200, 2000]) == 0 assert sun.is_Warning(600, [200, 2000]) == 1 assert sun.is_Warning(3000, [200, 2000]) == 2
def test_time_now_to_show(): assert sun.time_now_to_show()
def test_time_now_folder(): assert sun.time_now_folder()
def analyse_trace(ip, trace_level): s.TraceAnalyse(oddHAAPErrorDict, get_trace(ip, trace_level))
def test_is_port(): assert sun.is_port('789') == True assert sun.is_port(789) == True assert sun.is_port('a789') == False
def _telnet_write(self, str, time_out): str_encoded = s.encode_utf8(str) self._TN_Conn.Connection.write(str_encoded) time.sleep(time_out)
def test_ShowErr(): assert sun.ShowErr('a', 'b', 'c', 'd', 'e') == None
def config_target(IP_Entered, license, version, speed, solid_args): obj_msg_out = solid_args[0] s.msg_out(obj_msg_out, '0. Connecting to Engine %s \n' % IP_Entered) objEngine = Action(IP_Entered, telnet_port, passwd, FTP_port, version, solid_args) s.msg_out(obj_msg_out, '0. Connected to Engine %s \n' % IP_Entered) s.msg_out(obj_msg_out, ' 1. Start to Change FW\n') objEngine.change_FW(firmware_file_name) s.msg_out(obj_msg_out, ' 1. Change FW Done, Rebooting...\n') s.sand_glass(45) solid_args[0].insert('insert', ' 2. Start Restor Factory Default\n') objEngine.factory_default() solid_args[0].insert('insert', ' 2. Restor Factory Default Done, Rebooting...\n') sandglass(20) solid_args[0].insert('insert', ' 3. Start Changing IP Address\n') objEngine.change_ip_address(ip_engine_target) solid_args[0].insert('insert', ' 3. Change IP Address Done, Rebooting...\n') sandglass(15) del objEngine s.msg_out(obj_msg_out, '0. Connecting to Engine %s' % ip_engine_target) objEngine = Action(ip_engine_target, telnet_port, passwd, FTP_port, version, solid_args) s.msg_out(obj_msg_out, ' 4. Start to Install License\n') objEngine.install_license(license) s.msg_out(obj_msg_out, ' 4. Install License Done\n')
def Monitoring_heart_check(cycle_msg_args): t = s.Timing() t.add_cycle(se.send_live, cycle_msg_args) t.stt()
def Monitoring_heart_check(cycle_msg_args): t = s.Timing() email = se.Email() t.add_cycle(email.send_alive_mail, cycle_msg_args) t.stt()
def main(): if len(sys.argv) == 1: # 用户输入参数是否是本身,如果是 print(strHelp) # 打印帮助 # OK elif sys.argv[1] == 'ptes': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strPTESHelp) elif sys.argv[2] == 'all': sw.print_porterror_all_formated() else: if s.is_IP(sys.argv[2]): sw.print_porterror_formated(sys.argv[2]) else: print('Please provide correct switch ip...') # OK elif sys.argv[1] == 'ptcl': # 判断执行参数是否为ptcl num_argv = len(sys.argv) # 获取参数的个数 if num_argv == 2 or num_argv > 4: # 如果是2个或者大于4个 print(strPTCLHelp) # 打印提示信息 elif sys.argv[2] == 'all': # 如果是3个参数是 all sw.clear_all() # 调用清除所有交换机端口错误函数 elif s.is_IP(sys.argv[2]): # 如果第3个参数是ip的话,判断是不是ip if num_argv == 4: # 判断是否有第4个参数,如果有 # if _isPort(sys.argv[3]): 错误 if s.is_port(sys.argv[3]): # 在判断第4个参数是否是正确的端口 # 调用清除具体ip,端口错误 sw.clear_one_port(sys.argv[2], sys.argv[3]) else: print('Please provide correct port number...') # 请提供正确端口号 else: print(strPTCLHelp) # 打印提示 else: print('Please provide correct switch ip...') # 请提供正确的交换机ip # OK elif sys.argv[1] == 'sws': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strSWSHelp) elif sys.argv[2] == 'all': sw.print_switchshow_all() else: if s.is_IP(sys.argv[2]): sw.print_switchshow(sys.argv[2]) else: print('Please provide correct switch ip...') # OK elif sys.argv[1] == 'bc': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strBCHelp) elif sys.argv[2] == 'all': haap.backup_config_all() else: if s.is_IP(sys.argv[2]): haap.backup_config(sys.argv[2]) else: print('Please provide correct engine ip...') # get engines' trace files under TraceFolder based on Trace levels # trace、primary、seaond # OK git Trace NOT have Primary elif sys.argv[1] == 'gt': num_argv = len(sys.argv) if num_argv > 3: trace_level = int(sys.argv[3]) if num_argv == 2 or num_argv > 4: print(strGTHelp) elif sys.argv[2] == 'all': if num_argv > 3: if s.is_trace_level(trace_level): haap.get_trace_all(trace_level) else: print('Trace level must be "1" or "2" or "3"') else: haap.get_trace_all(0) elif s.is_IP(sys.argv[2]): if num_argv > 3: if s.is_trace_level(trace_level): haap.get_trace(sys.argv[2], trace_level) else: print('Trace level must be "1" or "2" or "3"') else: haap.get_trace(sys.argv[2], 0) else: print('Please provide correct engine ip...') # elif sys.argv[1] == 'at': # num_argv = len(sys.argv) # if num_argv > 3: # trace_level = sys.argv[3] # if num_argv == 2 or num_argv > 4: # print(strPTCLHelp) # elif sys.argv[2] == 'all': # if num_argv > 3: # if s.is_trace_level(trace_level): # haap.analyse_trace_all(trace_level) # else: # print('Trace Level Must Be "1" or "2" or "3"') # else: # haap.analyse_trace_all(0) # elif s.is_IP(sys.argv[2]): # if num_argv > 3: # if s.is_trace_level(trace_level): # haap.analyse_trace(sys.argv[2], trace_level) # else: # print('Trace Level Must Be "1" or "2" or "3"') # else: # haap.analyse_trace(sys.argv[2], 0) # else: # print('Please Provide Correct Engine IP...') # OK python Main.py at Trace\2019-00-00 elif sys.argv[1] == 'at': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strATHelp) else: if s.is_folder(sys.argv[2]): s.TraceAnalyse(sys.argv[2]).run() else: print('Please provide correct trace folder') # OK python Main.py ec 10.203.1.223 cmd.txt elif sys.argv[1] == 'ec': if len(sys.argv) != 4: print(strECHelp) else: ip = sys.argv[2] command_file = sys.argv[3] if not s.is_IP(ip): print('Please provide correct engine ip...') if not s.is_file(command_file): print('File not exists. please provide correct file...') haap.execute_multi_commands(ip, command_file) # OK python Main.py fw 10.203.1.223 FW15.9.7.7_OR.bin elif sys.argv[1] == 'fw': if len(sys.argv) != 4: print(strFWHelp) else: ip = sys.argv[2] fw_file = sys.argv[3] if not s.is_IP(ip): print('Please provide correct engine ip...') if not s.is_file(fw_file): print('File not exists. please provide correct file...') haap.change_firmware(ip, fw_file) # OK- elif sys.argv[1] == 'sts': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strSTSHelp) elif sys.argv[2] == 'all': haap.show_stauts_all() else: if s.is_IP(sys.argv[2]): haap.show_stauts(sys.argv[2]) else: print('Please provide correct engine ip...') # OK elif sys.argv[1] == 'st': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strSTHelp) elif sys.argv[2] == 'all': haap.set_time_all() else: if s.is_IP(sys.argv[2]): haap.set_time(sys.argv[2]) else: print('Please provide correct engine ip...') # OK elif sys.argv[1] == 'stm': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 3: print(strSTMHelp) elif sys.argv[2] == 'all': haap.show_time_all() else: if s.is_IP(sys.argv[2]): haap.show_time(sys.argv[2]) else: print('Please provide correct engine ip...') # OK elif sys.argv[1] == 'pc': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 4: print(strPCHelp) # print(strPTCLHelp) 原 elif num_argv > 2: if sys.argv[2] == 'all': haap.periodically_check_all() sw.periodically_check_all() elif sys.argv[2] == 'haap': if num_argv == 3: haap.periodically_check_all() elif num_argv > 3: if s.is_IP(sys.argv[3]): haap.periodically_check(sys.argv[3]) else: print('Please provide correct engine ip...') elif sys.argv[2] == 'sw': if num_argv == 3: sw.periodically_check_all() elif num_argv > 3: if s.is_IP(sys.argv[3]): sw.periodically_check(sys.argv[3]) else: print('Please provide correct SAN switch ip...') else: print(strPCHelp) # OK elif sys.argv[1] == 'mnt': num_argv = len(sys.argv) if num_argv == 2 or num_argv > 4: print(strMNTHelp) elif sys.argv[2] == 'rt': m.monitor_rt_1_thread() elif sys.argv[2] == 'db': m.monitor_db_4_thread() else: print('rt(realtime) or db(datarase)') elif sys.argv[1] == 'v': print("VersaTEL G1", cs.VERSION) else: print(strHelp)
def periodically_check(ip): PCFile_name = 'PC_%s_SANSwitch_%s.log' % (s.time_now_folder(), ip) Action(ip, ssh_port, user, passwd, []).periodic_check(lstPCCommand, strPCFolder, PCFile_name)
def periodically_check(ip): PCFile_name = 'PC_%s_Engine_%s.log' % ( s.time_now_folder(), ip) Action(ip, telnet_port, passwd, FTP_port).periodic_check( lstPCCommand, strPCFolder, PCFile_name)
def warning_interval_check(intInterval): t = s.Timing() t.add_interval(warning_check, intInterval) t.stt()
def setup_class(self): self.timing = sun.Timing()