pythonshell脚本。链接Unix OpenSSL命令

2024-05-14 18:48:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个简单的pythonshell脚本,它将接收用户输入的服务器名和端口号,并将其路由到一个OpenSSL命令中,该命令显示SSL证书过期信息。在

我正在使用subprocess模块,但是我不清楚用用户输入的信息链接命令的正确方法。在

完整命令是:

echo | openssl s_client -servername www.google.com -connect www.google.com:443 2>/dev/null | openssl x509 -noout -dates

命令的输出(这是我希望脚本输出的内容):

^{pr2}$

我的代码:

#!/usr/bin/env python
import subprocess 

server_name = raw_input("Enter server name: ")
port_number = raw_input("Enter port number: ")

def display_cert_info(servername, portnum):
    pn = str(server_name + ":" + port_number)
    cmd = ["echo", "|", "openssl", "s_client", "-servername", str(servername), "-connect", pn, "2>/dev/null", "|", "openssl", "x509", "-noout", "-dates"]

    info = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    output = info.communicate()[0]
    print(output)

display_cert_info(server_name, port_number)

感谢任何帮助!在


Tags: 用户name命令echoinfo脚本client信息
1条回答
网友
1楼 · 发布于 2024-05-14 18:48:47

与shell不同,标准输入、标准输出和标准错误都由^{}stdinstdout和{}参数来处理。因此,您可以丢弃前两个命令元素(echo |)。然后,您需要运行一个单独的进程,管道中的最后一个命令将第一个命令的输出放入其stdin。通常,在使用另一种语言运行时,不使用shell管道,而是使用该语言自己的管道(或流)机制。在

相关问题 更多 >

    热门问题