From 82bb2263c897af499089d707420801c7ae080f88 Mon Sep 17 00:00:00 2001 From: mikigo Date: Thu, 11 Apr 2024 09:52:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=201=E3=80=81=E4=BF=AE=E5=A4=8D=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E6=8E=A7=E5=88=B6=E5=8A=9F=E8=83=BD=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E6=9C=BA=E5=99=A8=E6=B2=A1=E6=9C=89=E8=87=AA=E5=8A=A8=E5=AE=89?= =?UTF-8?q?=E8=A3=85rpc=E4=BE=9D=E8=B5=96=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=9B2=E3=80=81=E4=BF=AE=E5=A4=8D=E4=BA=86skipif.py?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=AD=E9=80=9A=E8=BF=87cpu=20name?= =?UTF-8?q?=E8=B7=B3=E8=BF=87=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=9B3=E3=80=81=E4=BC=98=E5=8C=96=E4=BA=86=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E9=85=8D=E7=BD=AE=E9=87=8C=E9=9D=A2=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E9=97=AE=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Description: Log: --- setting/globalconfig.py | 14 +++++++++----- setting/skipif.py | 26 +++++++++++++++++--------- src/remotectl/_base.py | 23 +++++++++++++++-------- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/setting/globalconfig.py b/setting/globalconfig.py index 39d40f5..bc069a9 100644 --- a/setting/globalconfig.py +++ b/setting/globalconfig.py @@ -8,6 +8,7 @@ from enum import Enum from enum import unique from getpass import getuser from os import popen +from os import getenv from os.path import abspath from os.path import dirname from os.path import join @@ -189,13 +190,13 @@ class _GlobalConfig: END_DATE = log_cli.get("END_DATE", default="") # ====================== 动态获取变量 ====================== + version_cfg = GetCfg("/etc/os-version", "Version") + VERSION = (version_cfg.get("EditionName[zh_CN]") or "") + ( + version_cfg.get("MinorVersion") or "" + ) # IP - OS_VERSION = GetCfg("/etc/os-version", "Version") HOST_IP = str(popen("hostname -I |awk '{print $1}'").read()).strip("\n").strip() PRODUCT_INFO = popen("cat /etc/product-info").read() - VERSION = (OS_VERSION.get("EditionName[zh_CN]") or "") + ( - OS_VERSION.get("MinorVersion") or "" - ) # machine type # e.g. x86_64 SYS_ARCH = machine() @@ -226,12 +227,15 @@ class _GlobalConfig: .read() .split("=")[-1] .strip("\n") - ) + ) or getenv("XDG_SESSION_TYPE") class DisplayServer: wayland = "wayland" x11 = "x11" + if DISPLAY_SERVER not in (DisplayServer.x11, DisplayServer.wayland): + raise EnvironmentError(f"DISPLAY_SERVER: {DISPLAY_SERVER} why?") + IS_X11 = DISPLAY_SERVER == DisplayServer.x11 IS_WAYLAND = DISPLAY_SERVER == DisplayServer.wayland diff --git a/setting/skipif.py b/setting/skipif.py index 3f8dbaf..4102268 100644 --- a/setting/skipif.py +++ b/setting/skipif.py @@ -49,15 +49,15 @@ def skipif_cpu_name(args: str): _skip_key = args.split("&") for key in _skip_key: if ( - os.popen( - f"echo '{GlobalConfig.PASSWORD}'| " - "sudo -S dmidecode -s system-product-name | awk '{print $NF}'" - ) - .read() - .strip("\n") - .replace("-", "") - .replace("&", "") - == key + os.popen( + f"echo '{GlobalConfig.PASSWORD}'| " + "sudo -S dmidecode -s system-product-name | awk '{print $NF}'" + ) + .read() + .split("\n")[0] + .replace("-", "") + .replace("&", "") + == key ): return True return False @@ -73,3 +73,11 @@ def skipif_os_version(args: str): if key == GlobalConfig.OS_VERSION.get("MinorVersion"): return True return False + + +if __name__ == '__main__': + a = os.popen( + f"echo '{GlobalConfig.PASSWORD}'| " + "sudo -S dmidecode -s system-product-name | awk '{print $NF}'" + ).read().split("\n")[0] + print(a) diff --git a/src/remotectl/_base.py b/src/remotectl/_base.py index 491b0da..a032c67 100644 --- a/src/remotectl/_base.py +++ b/src/remotectl/_base.py @@ -60,8 +60,11 @@ def _exclude(): return exclude_str +def _ssh(ip, password, user): + return f"sshpass -p '{password}' ssh {user}@{ip}" + + def _transfer_appname(ip, password, user, transfer_appname): - os.system(f'''sshpass -p '{password}' ssh {user}@{ip} "mkdir -p ~/{client_project_path}/apps"''') os.system( f"sshpass -p '{password}' rsync -av -e ssh --exclude='__pycache__' " f"{conf.APPS_PATH}/{transfer_appname} {user}@{ip}:~/{client_project_path}/apps/{transfer_appname}" @@ -70,25 +73,29 @@ def _transfer_appname(ip, password, user, transfer_appname): def _transfer_to_client(ip, password, user): os.system( - f'''sshpass -p '{password}' ssh {user}@{ip} "mkdir -p ~/{client_project_path}"''' + f'''{_ssh(ip, password, user)} "mkdir -p ~/{client_project_path}"''' ) os.system( f"sshpass -p '{password}' rsync -av -e ssh {_exclude()} {conf.ROOT_DIR}/* " f"{user}@{ip}:~/{client_project_path}/" ) + os.system( + f'''{_ssh(ip, password, user)} "cd ~/{client_project_path}/ && mkdir apps && touch apps/__init__.py"''' + ) + os.system( + f'''{_ssh(ip, password, user)} "cd ~/{client_project_path}/apps/ && touch REMOTE"''' + ) if not os.popen( - f'''sshpass -p "{password}" ssh {user}@{ip} "cd ~/{client_project_path}/ && ls env_ok"''' + f'''{_ssh(ip, password, user)} "cd ~/{client_project_path}/ && ls env_ok"''' ).read().strip(): os.system( - f"sshpass -p '{password}' ssh {user}@{ip} " - f'"cd ~/{client_project_path}/ && ' - f'bash env.sh -p {password} && touch env_ok"' + f'{_ssh(ip, password, user)} "cd ~/{client_project_path}/ && bash env.sh -p {password} && touch env_ok"' ) def _start_client_service(ip, password, user, filename): _cmd = ( - f"nohup sshpass -p '{password}' ssh {user}@{ip} " + f"nohup {_ssh(ip, password, user)} " f'"cd ~/{client_project_path}/src/remotectl/ && ' f'pipenv run python {filename}" > /tmp/{filename}.log 2>&1 &' ) @@ -114,7 +121,7 @@ def check_rpc_started(filename): if transfer_appname: _transfer_appname(ip, password, user, transfer_appname) tool_status = os.popen( - f'''sshpass -p '{password}' ssh {user}@{ip} "ps -aux | grep {filename} | grep -v grep"''' + f'''{_ssh(ip, password, user)} "ps -aux | grep {filename} | grep -v grep"''' ).read() if not tool_status: _transfer_to_client(ip, password, user)