Exemplo n.º 1
0
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}
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
        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
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
        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