From 0827581dc9f64cfa96601fa36ae1fdc6d8e14dac Mon Sep 17 00:00:00 2001 From: xuezhixin Date: Mon, 13 Nov 2023 10:19:04 +0800 Subject: [PATCH] =?UTF-8?q?ABI=E5=A2=9E=E5=8A=A0ELF=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sysmig_agent/Abisystmcompchk.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/sysmig_agent/Abisystmcompchk.py b/sysmig_agent/Abisystmcompchk.py index e442cb5..541e9a8 100644 --- a/sysmig_agent/Abisystmcompchk.py +++ b/sysmig_agent/Abisystmcompchk.py @@ -180,3 +180,25 @@ def logger_init(): logger.addHandler(fh) return logger + + +# Check whether it is an ELF file +def is_ELFfile(filepath, logger): + if not os.path.exists(filepath): + logger.info('file not exit:' + filepath) + return False + try: + FileStates = os.stat(filepath) + FileMode = FileStates[stat.ST_MODE] + if not stat.S_ISREG(FileMode) or stat.S_ISLNK(FileMode): + return False + with open(filepath, 'rb') as f: + header = (bytearray(f.read(4)[1:4])).decode(encoding="utf-8") + # logger.info("header is {}".format(header)) + if header in ["ELF"]: + return True + except UnicodeDecodeError as e: + # logger.info("is_ELFfile UnicodeDecodeError {}".format(filepath)) + # logger.info(str(e)) + pass + return False -- 2.20.1