python发送输出命令到客户端套接字

时间:2012-10-10 14:03:00

标签: python sockets command client

我正在尝试学习python,对于一个我需要创建作业的课程。此分配指出我需要使用自签名证书创建服务器。我需要让这个服务器监听端口“int(sys.argv [1])”abd将linux命令“who”的结果发送回客户端。

我们可以像下面一样测试我们的脚本:

在1端子上运行示例端口1234上的脚本

在另一个终端运行以下命令: (测试:openssl s client -host localhost -port 1234)

当我在第二个终端上执行第二个命令时,我会收到证书上的所有信息,但不会收到发送回客户端的命令的输出。

这是我的代码到目前为止: http://pastebin.com/yFKLtyMW

请帮忙!

PS:我正在运行python 2.6

1 个答案:

答案 0 :(得分:1)

connstream = ssl.wrap_socket(newsocket, server_side=True, certfile="cert.pem", keyfile="test.key" )

将套接字封装到SSLSocket后,您应该只使用connstream而不是newsocket。 所以你的代码应该是这样的:

   try:
    #data = connstream.read(1024)
    output = commands.getoutput("who")
    connstream.write(output)

请注意,您不需要读取任何数据,因为另一端只等待命令的输出。因此,保留read语句将使您的SSL服务器在发送who命令的输出之前等待来自另一端的数据