在Python中实现远程Shell服务器
我正在用Python写一个远程命令行服务器。下面是它的工作原理。
1- 客户端连接到服务器。
2- 服务器提示客户端登录。
3- 登录后,用户可以向服务器发送命令。
4- 服务器执行这个命令。
这里有一段处理请求的服务器代码:
cmd=sock.recv(8192)
output = subprocess.Popen(cmd.split(),stdout=subprocess.PIPE).stdout.read()
sock.send(output)
我的问题是,我希望服务器能够同时处理多个客户端,并且每个客户端都有一个独立的命令行会话。
补充说明:
我希望服务器在接收到客户端的新连接时,能够启动一个新的命令行实例,并在连接关闭之前将这个实例保存在内存中。
1 个回答
0
你可以为每一个连接到你服务器的客户端启动一个线程,这个线程专门处理那个客户端的命令。可以这样理解:
def client_handler(socket, address):
# receive client commands and do whatever is necessary
if __name__ == '__main__':
# Socket, Bind, Listen
while True:
# Wait for connection and accept
thread.start_new_thread(client_handler, (socket, address))