Skip to content

Commit

Permalink
fix: 新增方法级别远程执行的方案;
Browse files Browse the repository at this point in the history
Description:

Log:
  • Loading branch information
mikigo committed Nov 17, 2023
1 parent 1fd597d commit 06797a0
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 12 deletions.
1 change: 0 additions & 1 deletion manage.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
from src.startapp import StartApp
from src import logger
from src.pms.pms2csv import Pms2Csv
from src.pms.csv2pms import Csv2Pms
from src.rtk._base import SubCmd
from src.rtk._base import Args
from src.rtk.local_runner import LocalRunner
Expand Down
19 changes: 10 additions & 9 deletions src/pms/csv2pms.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
# SPDX-License-Identifier: GPL-2.0-only
import json
import os
from concurrent.futures import ALL_COMPLETED
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import wait
# from concurrent.futures import ALL_COMPLETED
# from concurrent.futures import ThreadPoolExecutor
# from concurrent.futures import wait
from time import sleep
from urllib.parse import urlencode

Expand All @@ -17,6 +17,7 @@
from src.pms._base import _Base
from src.rtk._base import transform_app_name

__all__ = []

class Csv2Pms(_Base):
__author__ = "mikigo<[email protected]>"
Expand Down Expand Up @@ -117,10 +118,10 @@ def push(value, index):
)
print(f"({index}) {case_id} {data} {res.status}")

tasks = []
executor = ThreadPoolExecutor()
# tasks = []
# executor = ThreadPoolExecutor()
for index, value in enumerate(taglines):
# push(value, index)
t = executor.submit(push, value, index)
tasks.append(t)
wait(tasks, return_when=ALL_COMPLETED)
push(value, index)
# t = executor.submit(push, value, index)
# tasks.append(t)
# wait(tasks, return_when=ALL_COMPLETED)
95 changes: 95 additions & 0 deletions src/remotectl.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#!/usr/bin/env python3
# _*_ coding:utf-8 _*_

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.

import functools
# SPDX-License-Identifier: GPL-2.0-only
import os
import sys
import time

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from setting import conf

try:
import zerorpc
except ImportError:
os.system("pip3 install zerorpc -i https://pypi.tuna.tsinghua.edu.cn/simple")
time.sleep(1)
import zerorpc


def _context_manager(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):

tool_status = os.popen(
f'''sshpass -p '{conf.PASSWORD}' ssh {kwargs['user']}@{kwargs['ip']} "ps -aux | grep remote_mousekey | grep -v grep"'''
).read()
if not tool_status:
sudo = f"echo '{conf.PASSWORD}' | sudo -S"
if "StrictHostKeyChecking no" not in os.popen("cat /etc/ssh/ssh_config").read():
os.system(
f'{sudo} sed -i "s/# StrictHostKeyChecking ask/ StrictHostKeyChecking no/g" /etc/ssh/ssh_config'
)
if "/home/" not in conf.ROOT_DIR:
raise EnvironmentError
client_project_path = "/".join(conf.ROOT_DIR.split("/")[3:])
os.system(
f'''sshpass -p '{conf.PASSWORD}' ssh {kwargs['user']}@{kwargs['ip']} "mkdir -p ~/{client_project_path}"''')
exclude = ""
for i in [
"apps",
"report",
"public",
"__pycache__",
".pytest_cache",
".vscode",
".idea",
".git",
"site",
"docs",
"site",
"README.md",
"README.en.md",
"RELEASE.md",
]:
exclude += f"--exclude='{i}' "
os.system(
f"sshpass -p '{conf.PASSWORD}' rsync -av -e ssh {exclude} {conf.ROOT_DIR}/* "
f"{kwargs['user']}@{kwargs['ip']}:~/{client_project_path}/"
)
os.system(
f"sshpass -p '{conf.PASSWORD}' ssh {kwargs['user']}@{kwargs['ip']} "
f'"cd ~/{client_project_path}/;'
f'bash env.sh"'
)
_cmd = (
f"nohup sshpass -p '{conf.PASSWORD}' ssh {kwargs['user']}@{kwargs['ip']} "
f'"cd ~/{client_project_path}/src/;'
f'pipenv run python remotectl.py" > /tmp/remote_result.log 2>&1 &'
)
print(_cmd)
res = os.popen(_cmd).read()
print(res)
time.sleep(2)
return func(*args, **kwargs)

return wrapper


@_context_manager
def remotectl(user, ip):
r = zerorpc.Client(timeout=50, heartbeat=None)
r.connect(f"tcp://{ip}:4242")
return r


if __name__ == '__main__':
from src import Src

server = zerorpc.Server(Src())
server.bind("tcp://0.0.0.0:4242")
server.run()
2 changes: 0 additions & 2 deletions src/rtk/remote_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
from os import system
from os.path import exists
from os.path import splitext
# from threading import Thread
# from multiprocessing import Process as Thread
from concurrent.futures import ThreadPoolExecutor
from concurrent.futures import wait
from concurrent.futures import ALL_COMPLETED
Expand Down

0 comments on commit 06797a0

Please sign in to comment.