【问题标题】:python send output command to client socketpython将输出命令发送到客户端套接字
【发布时间】:2012-10-11 02:00:46
【问题描述】:

我正在尝试学习 python,并且对于一门课程,我需要创建一个作业。该作业表明我需要创建一个带有自签名证书的服务器。我需要让这个服务器在端口“int(sys.argv[1])”上监听 abd 将 linux 命令“who”的结果发送回客户端。

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

在 1 个终端中运行示例端口 1234 上的脚本

在另一个终端中运行以下命令: (测试:openssl的客户端-host localhost -port 1234)

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

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

请帮忙!

PS:我正在运行 python 2.6

【问题讨论】:

    标签: python sockets command client


    【解决方案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 命令的输出之前等待来自另一端的数据

    【讨论】:

    • 好吧,我确实看到了,但是当我将它粘贴到 pastebin 时忘记编辑,除此之外我仍然无法通过套接字向客户端发送信息。
    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2016-07-17
    • 2020-06-01
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多