在Python中实现远程Shell服务器

0 投票
1 回答
835 浏览
提问于 2025-04-18 19:25

我正在用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))

撰写回答