1ba991379Sopenharmony_ci# encoding=utf-8 2ba991379Sopenharmony_ci 3ba991379Sopenharmony_ciimport os 4ba991379Sopenharmony_ciimport socket 5ba991379Sopenharmony_ciimport subprocess 6ba991379Sopenharmony_ciimport time 7ba991379Sopenharmony_ci 8ba991379Sopenharmony_cifrom util.log_info import logger 9ba991379Sopenharmony_cifrom aw.Common.Constant import * 10ba991379Sopenharmony_ci 11ba991379Sopenharmony_cidef copyFile(source_path, copy_path, size=1024 * 1024): 12ba991379Sopenharmony_ci ''' 13ba991379Sopenharmony_ci #=================================================================================== 14ba991379Sopenharmony_ci # @Method: copyFile(self, source_path, copy_path, size=1024 * 1024) 15ba991379Sopenharmony_ci # @Precondition: none 16ba991379Sopenharmony_ci # @Func: 拷贝文件 17ba991379Sopenharmony_ci # @PostStatus: none 18ba991379Sopenharmony_ci # @Param: source_path:资源文件路径 19ba991379Sopenharmony_ci # copy_path:文件下载到本地的文件夹路径 20ba991379Sopenharmony_ci # size:字节数的大小 21ba991379Sopenharmony_ci # @eg: downloadByBitComet("xxxx", "D:\\local\\image") 22ba991379Sopenharmony_ci # @return: True or Flase 23ba991379Sopenharmony_ci #=================================================================================== 24ba991379Sopenharmony_ci ''' 25ba991379Sopenharmony_ci if not os.path.isfile(source_path): 26ba991379Sopenharmony_ci raise Exception("%s is not file" % source_path) 27ba991379Sopenharmony_ci if os.path.isdir(copy_path): 28ba991379Sopenharmony_ci copy_path = os.path.join(copy_path, os.path.basename(source_path)) 29ba991379Sopenharmony_ci try: 30ba991379Sopenharmony_ci with open(source_path, 'rb') as fr, open(copy_path, 'wb') as fw: 31ba991379Sopenharmony_ci while(True): 32ba991379Sopenharmony_ci data = fr.read(size) 33ba991379Sopenharmony_ci if not data: 34ba991379Sopenharmony_ci break 35ba991379Sopenharmony_ci fw.write(data) 36ba991379Sopenharmony_ci except: 37ba991379Sopenharmony_ci raise Exception("Copy %s to %s failed" % (source_path, copy_path)) 38ba991379Sopenharmony_ci 39ba991379Sopenharmony_ci 40ba991379Sopenharmony_cidef copyDirectory(src_dir, dst_dir): 41ba991379Sopenharmony_ci # copy everything under <src_dir> into <dst_dir> 42ba991379Sopenharmony_ci if not os.path.isdir(src_dir): 43ba991379Sopenharmony_ci return False 44ba991379Sopenharmony_ci 45ba991379Sopenharmony_ci if not os.path.isdir(dst_dir): 46ba991379Sopenharmony_ci try: 47ba991379Sopenharmony_ci os.makedirs(dst_dir) 48ba991379Sopenharmony_ci except Exception as e: 49ba991379Sopenharmony_ci logger.error(e) 50ba991379Sopenharmony_ci 51ba991379Sopenharmony_ci time.sleep(1) 52ba991379Sopenharmony_ci if not os.path.isdir(dst_dir): 53ba991379Sopenharmony_ci return False 54ba991379Sopenharmony_ci 55ba991379Sopenharmony_ci logger.info("copy %s to %s" % (src_dir, dst_dir)) 56ba991379Sopenharmony_ci for item in os.listdir(src_dir): 57ba991379Sopenharmony_ci file_path = os.path.join(src_dir, item) 58ba991379Sopenharmony_ci child_path = os.path.join(dst_dir, item) 59ba991379Sopenharmony_ci if os.path.isfile(file_path): 60ba991379Sopenharmony_ci logger.info("copy %s to %s" % (file_path, child_path)) 61ba991379Sopenharmony_ci copyFile(file_path, child_path) 62ba991379Sopenharmony_ci if not os.path.isfile(child_path): 63ba991379Sopenharmony_ci logger.error("Copy %s to %s failed" % (file_path, child_path)) 64ba991379Sopenharmony_ci return False 65ba991379Sopenharmony_ci else: 66ba991379Sopenharmony_ci if os.path.isdir(file_path): 67ba991379Sopenharmony_ci ret = copyDirectory(file_path, child_path) 68ba991379Sopenharmony_ci if not ret: 69ba991379Sopenharmony_ci return False 70ba991379Sopenharmony_ci return True 71ba991379Sopenharmony_ci 72ba991379Sopenharmony_cidef getHostIp(): 73ba991379Sopenharmony_ci """ 74ba991379Sopenharmony_ci #=================================================================================== 75ba991379Sopenharmony_ci # @Method: getHostIp() 76ba991379Sopenharmony_ci # @Precondition: none 77ba991379Sopenharmony_ci # @Func: 返回机器ip 78ba991379Sopenharmony_ci # @PostStatus: none 79ba991379Sopenharmony_ci # @eg: getHostIp() 80ba991379Sopenharmony_ci # @return: ip 81ba991379Sopenharmony_ci #=================================================================================== 82ba991379Sopenharmony_ci """ 83ba991379Sopenharmony_ci ip = "" 84ba991379Sopenharmony_ci s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 85ba991379Sopenharmony_ci try: 86ba991379Sopenharmony_ci s.connect(('8.8.8.8', 80)) 87ba991379Sopenharmony_ci ip = s.getsockname()[0] 88ba991379Sopenharmony_ci except OSError as e: 89ba991379Sopenharmony_ci print(e) 90ba991379Sopenharmony_ci finally: 91ba991379Sopenharmony_ci s.close() 92ba991379Sopenharmony_ci return ip 93ba991379Sopenharmony_ci 94ba991379Sopenharmony_cidef getFileName(path, suffix_name): 95ba991379Sopenharmony_ci ''' 96ba991379Sopenharmony_ci #=================================================================================== 97ba991379Sopenharmony_ci # @Method: getFileName(path, suffix_name) 98ba991379Sopenharmony_ci # @Precondition: none 99ba991379Sopenharmony_ci # @Func: find the flash script in version path or root path 100ba991379Sopenharmony_ci # @PostStatus: 101ba991379Sopenharmony_ci # @Param: path, version path or root path 102ba991379Sopenharmony_ci # @Example: getFileName(path, suffix_name) 103ba991379Sopenharmony_ci # @Author: zwx205888 104ba991379Sopenharmony_ci # @ModifyRecord: none 105ba991379Sopenharmony_ci #=================================================================================== 106ba991379Sopenharmony_ci ''' 107ba991379Sopenharmony_ci logger.info("get %s in %s" % (suffix_name, path)) 108ba991379Sopenharmony_ci import glob 109ba991379Sopenharmony_ci script_files = glob.glob(os.path.join(path, "*" + suffix_name)) 110ba991379Sopenharmony_ci logger.info("real file is : %s " % script_files) 111ba991379Sopenharmony_ci if len(script_files) != 1: 112ba991379Sopenharmony_ci logger.error("more than one %s file or has No %s file" % (suffix_name, suffix_name)) 113ba991379Sopenharmony_ci return False 114ba991379Sopenharmony_ci 115ba991379Sopenharmony_ci return script_files[0] 116ba991379Sopenharmony_ci 117ba991379Sopenharmony_cidef subProcessPopen(cmd, outlog_enable=True, errlog_enable=True): 118ba991379Sopenharmony_ci """ 119ba991379Sopenharmony_ci @Method: subProcessPopen() 120ba991379Sopenharmony_ci @Precondition: none 121ba991379Sopenharmony_ci @Func: excute the command 122ba991379Sopenharmony_ci @PostStatus: none 123ba991379Sopenharmony_ci @Param: cmd,the command that will be excuted 124ba991379Sopenharmony_ci @Example: subProcessPopen("RD /Q /F D:\test") 125ba991379Sopenharmony_ci @ModifyRecord: none 126ba991379Sopenharmony_ci """ 127ba991379Sopenharmony_ci 128ba991379Sopenharmony_ci ret_dict = {} 129ba991379Sopenharmony_ci number = 3 130ba991379Sopenharmony_ci 131ba991379Sopenharmony_ci for i in range (number): 132ba991379Sopenharmony_ci p1 = subprocess.Popen(cmd, 133ba991379Sopenharmony_ci stdin=subprocess.PIPE, 134ba991379Sopenharmony_ci stdout=subprocess.PIPE, 135ba991379Sopenharmony_ci stderr=subprocess.PIPE, 136ba991379Sopenharmony_ci shell=True) 137ba991379Sopenharmony_ci out, err = p1.communicate() 138ba991379Sopenharmony_ci if 0 != p1.returncode: 139ba991379Sopenharmony_ci if True == outlog_enable: 140ba991379Sopenharmony_ci logger.error(err) 141ba991379Sopenharmony_ci logger.error("%s fail" % cmd) 142ba991379Sopenharmony_ci ret = False 143ba991379Sopenharmony_ci else: 144ba991379Sopenharmony_ci ret = True 145ba991379Sopenharmony_ci ret_dict["ret"] = ret 146ba991379Sopenharmony_ci ret_dict["out"] = out.strip() 147ba991379Sopenharmony_ci ret_dict["err"] = err.strip() 148ba991379Sopenharmony_ci if outlog_enable: 149ba991379Sopenharmony_ci logger.info("ret is %s" % ret) 150ba991379Sopenharmony_ci logger.info(out.strip()) 151ba991379Sopenharmony_ci if errlog_enable: 152ba991379Sopenharmony_ci logger.info(err.strip()) 153ba991379Sopenharmony_ci if ret_dict["out"] or ret_dict["err"]: 154ba991379Sopenharmony_ci break 155ba991379Sopenharmony_ci return ret_dict