1

我正在尝试学习 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

4

1 回答 1

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

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

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

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

于 2012-10-10T14:40:10.557 回答