From 5fa26571b0f6644227ff4c5a47164b3590da7885 Mon Sep 17 00:00:00 2001 From: feng626 <1304903146@qq.com> Date: Fri, 22 Oct 2021 11:19:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20rdp=E5=9B=BA=E5=AE=9A=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Mac/JumpServer.py | 27 +++++++++++++++++++-------- README.md | 2 +- Windows/JumpServer.py | 24 ++++++++++++++++++------ 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/Mac/JumpServer.py b/Mac/JumpServer.py index f7d4307..aff2920 100644 --- a/Mac/JumpServer.py +++ b/Mac/JumpServer.py @@ -1,23 +1,34 @@ # -*- coding: utf-8 -*- import os +import re import sys import json import base64 import platform +import subprocess ''' { - "protocol": "ssh", - "username": "laoguang", - "token": "xxx", // 认证 授权 - "config": "full address:s:rdjumpserver.fit2cloud.com:33390" + "filename": "{}-{}-jumpserver".format(username, name), + "protocol": "ssh", + "username": "laoguang", + "token": "xxx", // 认证 授权 + "config": "full address:s:rdjumpserver.fit2cloud.com:33390" } ''' BASE_DIR = os.path.dirname(__file__) +def remove_current_rdp_file(): + re_rdp_file = re.compile(r'.*\.rdp$') + for filename in os.listdir(BASE_DIR): + if re_rdp_file.search(filename): + os.remove(os.path.join(filename)) + + class Rouse(object): def __init__(self, data): + self.filename = data.get('filename', 'jms') self.protocol = data['protocol'] self.config = data['config'] @@ -25,23 +36,23 @@ def handle_ssh(self): pass def handle_rdp(self): - file_path = os.path.join(BASE_DIR, 'client.rdp') + file_path = os.path.join(BASE_DIR, self.filename + '.rdp') with open(file_path, 'w') as f: f.write(self.config) if platform.system().lower() == 'windows': - os.system('mstsc.exe {0}'.format(file_path)) + subprocess.call('mstsc.exe {0}'.format(file_path), shell=True) else: - os.system('open {0}'.format(file_path)) + subprocess.call('open {0}'.format(file_path), shell=True) def run(self): getattr(self, 'handle_' + self.protocol)() if __name__ == '__main__': - args = sys.argv if len(args) != 1: d = args[1].replace('jms://', '') d = json.loads(base64.b64decode(d).decode()) + remove_current_rdp_file() instance = Rouse(d) instance.run() diff --git a/README.md b/README.md index 1c841b7..2f0ae58 100755 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ JumpServer 客户端,目前仅 支持 RDP 的本地拉起,下一步计划, ## 测试 -url link: jms://eyJwcm90b2NvbCI6ICJyZHAiLCAidXNlcm5hbWUiOiAibGFvZ3VhbmciLCAidG9rZW4iOiAieHh4IiwgImNvbmZpZyI6ICJmdWxsIGFkZHJlc3M6czp5eS5maXQyY2xvdWQuY29tOjMzMzg5XG51c2VybmFtZTpzOmZlbmdxaWFuZ3xTNEY2RUZzTVo3TjZVTVBZcFRWdzJQSFVSZ3dKVkpNcHAzZEZcbnNjcmVlbiBtb2RlIGlkOmk6MFxudXNlIG11bHRpbW9uOmk6MVxuc2Vzc2lvbiBicHA6aTozMlxuYXVkaW9tb2RlOmk6MFxuZGlzYWJsZSB3YWxscGFwZXI6aTowXG5kaXNhYmxlIGZ1bGwgd2luZG93IGRyYWc6aTowXG5kaXNhYmxlIG1lbnUgYW5pbXM6aTowXG5kaXNhYmxlIHRoZW1lczppOjBcbmFsdGVybmF0ZSBzaGVsbDpzOlxuc2hlbGwgd29ya2luZyBkaXJlY3Rvcnk6czpcbmF1dGhlbnRpY2F0aW9uIGxldmVsOmk6MlxuY29ubmVjdCB0byBjb25zb2xlOmk6MFxuZGlzYWJsZSBjdXJzb3Igc2V0dGluZzppOjBcbmFsbG93IGZvbnQgc21vb3RoaW5nOmk6MVxuYWxsb3cgZGVza3RvcCBjb21wb3NpdGlvbjppOjFcbnJlZGlyZWN0cHJpbnRlcnM6aTowXG5wcm9tcHQgZm9yIGNyZWRlbnRpYWxzIG9uIGNsaWVudDppOjBcbmF1dG9yZWNvbm5lY3Rpb24gZW5hYmxlZDppOjFcbmJvb2ttYXJrdHlwZTppOjNcbnVzZSByZWRpcmVjdGlvbiBzZXJ2ZXIgbmFtZTppOjBcbnNtYXJ0IHNpemluZzppOjEifQ== +url link: jms://eyJwcm90b2NvbCI6ICJyZHAiLCAidXNlcm5hbWUiOiAibGFvZ3VhbmciLCAidG9rZW4iOiAieHh4IiwgImNvbmZpZyI6ICJmdWxsIGFkZHJlc3M6czp5eS5maXQyY2xvdWQuY29tOjMzMzg5XG51c2VybmFtZTpzOmZlbmdxaWFuZ3xTNEY2RUZzTVo3TjZVTVBZcFRWdzJQSFVSZ3dKVkpNcHAzZEZcbnNjcmVlbiBtb2RlIGlkOmk6MFxudXNlIG11bHRpbW9uOmk6MVxuc2Vzc2lvbiBicHA6aTozMlxuYXVkaW9tb2RlOmk6MFxuZGlzYWJsZSB3YWxscGFwZXI6aTowXG5kaXNhYmxlIGZ1bGwgd2luZG93IGRyYWc6aTowXG5kaXNhYmxlIG1lbnUgYW5pbXM6aTowXG5kaXNhYmxlIHRoZW1lczppOjBcbmFsdGVybmF0ZSBzaGVsbDpzOlxuc2hlbGwgd29ya2luZyBkaXJlY3Rvcnk6czpcbmF1dGhlbnRpY2F0aW9uIGxldmVsOmk6MlxuY29ubmVjdCB0byBjb25zb2xlOmk6MFxuZGlzYWJsZSBjdXJzb3Igc2V0dGluZzppOjBcbmFsbG93IGZvbnQgc21vb3RoaW5nOmk6MVxuYWxsb3cgZGVza3RvcCBjb21wb3NpdGlvbjppOjFcbnJlZGlyZWN0cHJpbnRlcnM6aTowXG5wcm9tcHQgZm9yIGNyZWRlbnRpYWxzIG9uIGNsaWVudDppOjBcbmF1dG9yZWNvbm5lY3Rpb24gZW5hYmxlZDppOjFcbmJvb2ttYXJrdHlwZTppOjNcbnVzZSByZWRpcmVjdGlvbiBzZXJ2ZXIgbmFtZTppOjBcbnNtYXJ0IHNpemluZzppOjEiLCAiZmlsZW5hbWUiOiAidGVzdC1yZHAtanVtcHNlcnZlciJ9 ## 打包 diff --git a/Windows/JumpServer.py b/Windows/JumpServer.py index 26cbf27..ddfdbf8 100644 --- a/Windows/JumpServer.py +++ b/Windows/JumpServer.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- import os +import re import sys import json import base64 @@ -8,17 +9,26 @@ ''' { - "protocol": "ssh", - "username": "laoguang", - "token": "xxx", // 认证 授权 - "config": "full address:s:rdjumpserver.fit2cloud.com:33390" + "filename": "{}-{}-jumpserver".format(username, name), + "protocol": "ssh", + "username": "laoguang", + "token": "xxx", // 认证 授权 + "config": "full address:s:rdjumpserver.fit2cloud.com:33390" } ''' BASE_DIR = os.path.dirname(__file__) +def remove_current_rdp_file(): + re_rdp_file = re.compile(r'.*\.rdp$') + for filename in os.listdir(BASE_DIR): + if re_rdp_file.search(filename): + os.remove(os.path.join(filename)) + + class Rouse(object): def __init__(self, data): + self.filename = data.get('filename', 'jms') self.protocol = data['protocol'] self.config = data['config'] @@ -26,7 +36,7 @@ def handle_ssh(self): pass def handle_rdp(self): - file_path = os.path.join(BASE_DIR, 'client.rdp') + file_path = os.path.join(BASE_DIR, self.filename + '.rdp') with open(file_path, 'w') as f: f.write(self.config) if platform.system().lower() == 'windows': @@ -39,10 +49,12 @@ def run(self): if __name__ == '__main__': - args = sys.argv if len(args) != 1: d = args[1].replace('jms://', '') + if d[-1] == '/': + d = d[:-1] d = json.loads(base64.b64decode(d).decode()) + remove_current_rdp_file() instance = Rouse(d) instance.run()