2014-08-29 39 views
0

我正在用python写一个远程shell服务器。它的工作原理如下。在python中实现远程shell服务器

1-客户端连接到服务器。 2 - 服务器提示客户端登录。 2 - 之后,用户可以发送一个shell命令给服务器。 3 - 服务器执行命令。

这里是服务器代码的片段,处理即将到来的请求

cmd=sock.recv(8192) 
output = subprocess.Popen(cmd.split(),stdout=subprocess.PIPE).stdout.read() 
sock.send(output) 

我的问题是我想要的服务器来处理多个客户端,我想每一个客户有一个单独的shell会话。

编辑:

我希望服务器时,它接收来自客户端的新连接启动shell的新实例,并保持该实例在内存中,直到连接关闭。

+1

嘿那里。它似乎并没有真的问过一个问题:( – Ffisegydd 2014-08-29 09:31:50

回答

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))