fix: 1、修复远程控制功能远程机器没有自动安装rpc依赖的问题;2、修复了skipif.py插件中通过cpu name跳过失效的问题;3、优化了全局配置里面的一些问题;
Description: Log:
This commit is contained in:
parent
77d67f90bc
commit
82bb2263c8
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue