diff --git a/class/core/ssh_terminal.py b/class/core/ssh_terminal.py index 733289b8e..b7fcb3409 100644 --- a/class/core/ssh_terminal.py +++ b/class/core/ssh_terminal.py @@ -28,7 +28,7 @@ import paramiko from flask_socketio import SocketIO, emit, send -class ssh_terminal: +class ssh_terminal(object): __debug_file = 'logs/terminal.log' __log_type = 'SSH终端' @@ -59,6 +59,14 @@ class ssh_terminal: ht = threading.Thread(target=self.heartbeat) ht.start() + @classmethod + def instance(cls, *args, **kwargs): + if not hasattr(ssh_terminal, "_instance"): + with ssh_terminal._instance_lock: + if not hasattr(ssh_terminal, "_instance"): + ssh_terminal._instance = ssh_terminal(*args, **kwargs) + return ssh_terminal._instance + def debug(self, msg): msg = "{} - {}:{} => {} \n".format(mw.formatDate(), self.__host, self.__port, msg) diff --git a/route/__init__.py b/route/__init__.py index cd9855dff..fe41dca6a 100755 --- a/route/__init__.py +++ b/route/__init__.py @@ -596,8 +596,6 @@ def index(reqClass=None, reqAction=None, reqData=None): ##################### ssh start ########################### shell = None -shell_client = None - @socketio.on('webssh_websocketio') def webssh_websocketio(data): @@ -605,11 +603,8 @@ def webssh_websocketio(data): emit('server_response', {'data': '会话丢失,请重新登陆面板!\r\n'}) return - global shell_client - if not shell_client: - import ssh_terminal - shell_client = ssh_terminal.ssh_terminal() - + import ssh_terminal + shell_client = ssh_terminal.instance() shell_client.run(request.sid, data) return