def exec_cmd(cmd, conn=None): logger = get_logger() oprt_id = log.create_oprt_id() func_name = traceback.extract_stack()[-3][2] logger.write_to_log(conn, 'DATA', 'STR', func_name, '', oprt_id) logger.write_to_log(conn, 'OPRT', 'CMD', func_name, oprt_id, cmd) if conn: result = conn.exec_cmd(cmd) logger.write_to_log(conn, 'DATA', 'CMD', func_name, oprt_id, result) return result else: p = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True, encoding="utf-8") if p.returncode == 0: result = p.stdout logger.write_to_log(conn, 'DATA', 'CMD', func_name, oprt_id, { "st": True, "rt": result }) return {"st": True, "rt": result} else: logger.write_to_log(conn, 'DATA', 'CMD', func_name, oprt_id, { "st": False, "rt": p.stderr }) return {"st": False, "rt": p.stderr}
def re_findall(conn, re_string, tgt_string): logger = get_logger() oprt_id = log.create_oprt_id() re_obj = re.compile(re_string) logger.write_to_log(conn, 'OPRT', 'REGULAR', 're_findall', oprt_id, {'re': re_string, 'string': tgt_string}) re_result = re_obj.findall(tgt_string) logger.write_to_log(conn, 'DATA', 'REGULAR', 're_findall', oprt_id, re_result) return re_result
def re_findall(re_string, tgt_string): logger = log.Log() re_ = re.compile(re_string) oprt_id = log.create_oprt_id() logger.write_to_log('OPRT', 'REGULAR', 'findall', oprt_id, { 're': re_, 'string': tgt_string }) re_result = re_.findall(tgt_string) logger.write_to_log('DATA', 'REGULAR', 'findall', oprt_id, re_result) return re_result
def upload_file(local, remote, conn=None): logger = get_logger() oprt_id = log.create_oprt_id() func_name = traceback.extract_stack()[-2][2] logger.write_to_log('', 'DATA', 'STR', func_name, '', oprt_id) logger.write_to_log('', 'OPRT', 'upload', func_name, oprt_id, f"{local} ==> {get_global_dict_value(conn)}:{remote}") if conn: result = conn.sftp_upload(local, remote) else: cmd = f'cp -r {local} {remote}' result = exec_cmd(cmd) logger.write_to_log('', 'DATA', 'upload', func_name, oprt_id, result) return result
def re_search(conn, re_string, tgt_string, output_type='bool'): logger = get_logger() oprt_id = log.create_oprt_id() re_obj = re.compile(re_string) re_result = re_obj.search(tgt_string) logger.write_to_log(conn, 'OPRT', 'REGULAR', 're_search', oprt_id, {'re': re_string, 'string': tgt_string}) if re_result: if output_type == 'bool': re_result = True if output_type == 'groups': re_result = re_result.groups() if output_type == 'group': re_result = re_result.group() logger.write_to_log(conn, 'DATA', 'REGULAR', 're_search', oprt_id, re_result) return re_result
def re_search(re_string, tgt_stirng, output_type='group'): logger = log.Log() re_ = re.compile(re_string) oprt_id = log.create_oprt_id() logger.write_to_log('OPRT', 'REGULAR', 'search', oprt_id, { 're': re_, 'string': tgt_stirng }) re_result = re_.search(tgt_stirng) if re_result: if output_type == 'group': re_result = re_result.group() else: re_result = re_result.groups() logger.write_to_log('DATA', 'REGULAR', 'search', oprt_id, re_result) return re_result
def wrapper(cmd): RPL = Replay.switch oprt_id = log.create_oprt_id() func_name = traceback.extract_stack()[-2][2] # 装饰器获取被调用函数的函数名 if not RPL: logger = log.Log() logger.write_to_log('DATA', 'STR', func_name, '', oprt_id) logger.write_to_log('OPRT', 'CMD', type, oprt_id, cmd) result_cmd = func(cmd) logger.write_to_log('DATA', 'CMD', type, oprt_id, result_cmd) return result_cmd else: logdb = LogDB() id_result = logdb.get_id(func_name) cmd_result = logdb.get_oprt_result() if type != 'sys' and cmd_result['result']: result = eval(cmd_result['result']) result_replay = result['rst'] else: result = cmd_result['result'] result_replay = cmd_result['result'] if cmd == 'crm configure show | cat' or \ cmd == 'linstor --no-color --no-utf8 n l' or \ cmd == 'linstor --no-color --no-utf8 r lv' or \ cmd == 'linstor --no-color --no-utf8 sp l': if Replay.mode == 'LITE': Replay.specific_data.update( {Replay.num: result_replay}) result_replay = f'...({Replay.num})' Replay.num += 1 list_rd1 = [id_result['time'], '<cmd>cmd', cmd] if not result_replay: list_rd2 = [cmd_result['time'], '<cmd>result', result] else: list_rd2 = [ cmd_result['time'], '<cmd>result', result_replay.replace('\t', '') ] Replay.replay_data.append(list_rd1) Replay.replay_data.append(list_rd2) return result
def wrapper(self, sql, data, tablename): RPL = Replay.switch if not RPL: logger = log.Log() oprt_id = log.create_oprt_id() logger.write_to_log('DATA', 'STR', func.__name__, '', oprt_id) logger.write_to_log('OPRT', 'SQL', func.__name__, oprt_id, sql) func(self, sql, data, tablename) logger.write_to_log('DATA', 'SQL', func.__name__, oprt_id, data) else: logdb = LogDB() id_result = logdb.get_id(func.__name__) func(self, sql, data, tablename) replay_data = json.dumps(data, indent=2) list_rd1 = [id_result['time'], '<sql>insert table', tablename] list_rd2 = [id_result['time'], '<sql>insert data', replay_data] Replay.replay_data.append(list_rd1) Replay.replay_data.append(list_rd2)
def wrapper(self, *args): RPL = Replay.switch if not RPL: logger = log.Log() oprt_id = log.create_oprt_id() logger.write_to_log('DATA', 'STR', func.__name__, '', oprt_id) logger.write_to_log('OPRT', 'JSON', func.__name__, oprt_id, args) result = func(self, *args) logger.write_to_log('DATA', 'JSON', func.__name__, oprt_id, result) else: logdb = LogDB() id_result = logdb.get_id(func.__name__) json_result = logdb.get_oprt_result() if json_result['result']: result = eval(json_result['result']) else: result = '' result_replay = json.dumps(result, indent=2) if str == 'read json' or str == 'commit data': str_opertion = str if Replay.mode == 'LITE': Replay.specific_data.update( {Replay.num: result_replay}) result_replay = f'...({Replay.num})' Replay.num += 1 elif str == 'check key' or str == 'check value': str_opertion = f'check "{args[1]}" in "{args[0]}"' elif str == 'check if it is used': str_opertion = f'check "{args[2]}" in "{args[0]}" of "{args[1]}"' elif str == 'update data' or str == 'update all data' or str == 'delete data': str_opertion = str func(self, *args) else: str_opertion = str list_rd = [ id_result['time'], f'<JSON>{str_opertion}', result_replay ] Replay.replay_data.append(list_rd) return result