From 9031ccf7e657286dfb18fe181fe97080ce5228dc Mon Sep 17 00:00:00 2001 From: xuezhixin Date: Mon, 13 Nov 2023 09:58:36 +0800 Subject: [PATCH] =?UTF-8?q?ABI=E6=A3=80=E6=B5=8B=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysmig_agent/Abisystmcompchk.py | 116 ++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 sysmig_agent/Abisystmcompchk.py diff --git a/sysmig_agent/Abisystmcompchk.py b/sysmig_agent/Abisystmcompchk.py new file mode 100644 index 0000000..abe6083 --- /dev/null +++ b/sysmig_agent/Abisystmcompchk.py @@ -0,0 +1,116 @@ +# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +# SPDX-License-Identifier: MulanPubL-2.0-or-later + + +import queue,os,string +import threading,codecs +import time,rpm,stat,re +import datetime +import platform +import json,xlrd,xlwt +import socket +from xlutils.copy import copy +from shutil import copyfile +#from sysmig_agent.share import * +from multiprocessing import Process +from multiprocessing import cpu_count + +from logger import * +#from connect_sql import DBHelper + +workQueue = queue.Queue() +queueLock = threading.Lock() + +#为便于测试将变量、接口从share.py中拷贝到当前文件,待联调通过后删除即可 +######################## add for test start ######################## +local_dir = '/var/tmp/uos-migration/data/' +exp_rst_dir = local_dir+'exp-rst/' + +current_system_unique = exp_rst_dir + 'current-system-unique.csv' +migration_system_install = exp_rst_dir + 'migration-system-install.csv' +migration_system_total = exp_rst_dir + 'migration-system-total.csv' +abi_comp_chk = exp_rst_dir + 'abi-comp-chk.csv' +abi_incomp_chk = exp_rst_dir + 'abi-incomp-chk.csv' +exitFlag = 0 +total_rpm_nums = 0 +percentage = '' +deal_rpm_num = 0 +agent_abi_check_result = exp_rst_dir + 'agent_ABI_check_result.csv' +suffix_list = ['.mo', '.gz', '.xml', '.conf', '.png', '.page', '.woff', '.ttf', '.pyc', '.typelib', '.pdf', '.ppt', '.txt', '.ico', '.icc', '.tcc', '.gif', '.oga', '.rom', '.jpg', '.dict', '.webm', '.pyc', '.wav', '.ucode', '.ttc', '.gresource', '.otf', '.t1', '.db', '.elc', '.cache', '.fd', '.iso', '.efi', '.mmdb', '.bz2', '.img', '.bin', '.fw', '.cis', '.itb', '.inp', '.sbcf', '.ddc', '.sfi', '.bseq', '.mfa2', '.chk', '.mgc', '.stub', '.dfu', '.dat', '.sys', '.bts', '.dlmem', '.brd', '.hwm', '.pwd', '.pwi', '.exe', '.der', '.p12', '.ogg', '.signed', '.dafsa', '.gpg', '.tri', '.x86_64'] + +#Queue = queue.Queue() + +def os_storage(): + """ + 判断系统剩余空间大小 + :return: GB + """ + path = '/var/cache' + stat = os.statvfs(path) + CACHE_SPACE = 10.0 + state = 1 + ava_cache = format(stat.f_bavail * stat.f_frsize / 1024 // 1024 / 1024, '.1f') + if stat: + # with open(PRE_MIG,'a+') as pf: + # pf.write('/var/cache可用空间为'+ava_cache+'GB') + # pf.close() + if float(ava_cache) >= CACHE_SPACE: + state = 0 + return ava_cache + # data = '可用空间为'+ava_cache+'GB' + else: + return ava_cache + # data = '可用空间为' + ava_cache + 'GB,请清理/var/cache的空间后重试。' + else: + return ava_cache + # data = '可用空间为'+ava_cache+'GB,请清理/var/cache的空间后重试。' + # return list_to_json(keylist,valuelist) + +def get_local_ip(): + try: + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.connect(('8.8.8.8', 80)) + ip = s.getsockname()[0] + return ip + finally: + s.close() + +def abi_check_sys_type(): + path = '/etc/os-version' + if os.path.exists(path): + with open(path,'r') as v: + ret = v.readlines() + localos=ostype='' + for i in range(len(ret)): + if not ret[i]: + continue + if 'MinorVersion' in ret[i]: + strminor = str(ret[i]) + _, localos = strminor.split('=',1) + if 'EditionName[zh_CN]' in ret[i]: + strminor = str(ret[i]) + _, ostype = strminor.split('=',1) + ostype = re.sub('[^a-zA-Z]+','',ostype) + localos = localos.strip().strip('\n') + ostype.strip().strip('\n') + #localos = new_os.format(localos.strip().strip('\n')) + return localos + +def abi_check_sys(): + c8 = ['1020a', '1021a', '1050a'] + c7 = ['1000c', '1001c', '1002a'] + system_type = abi_check_sys_type() + if not system_type: + os_version_ret = platform.dist() + osname = os_version_ret[1].strip() + osn = osname.split('.',-1)[0] + return osn.strip('\n') + for i in range(len(c8)): + if c8[i] in system_type: + return 8 + for i in range(len(c7)): + if c7[i] in system_type: + return 7 + return None + +######################## add for test end ######################## +######################## add for test end ######################## \ No newline at end of file -- 2.20.1