繁体   English   中英

Python子进程仅给出1输出而不是2

[英]Python subprocess only giving 1 output instead of 2

我想使用openssl和python子key.pem生成2个证书,它们是key.pemcert.pem并且正在使用以下命令来这样做。

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

从终端执行此命令时效果很好,但是在python子进程的帮助下从python脚本执行该命令时,该命令仅将key.pem文件输出到所需目录中,而不提供cert.pem文件。 以下是python脚本的代码段:

    tempdirname = 'temp_cert/'
    keyname = 'key.pem'
    certname = 'cert.pem'

    expiration_period = '500'
    cmd = ['openssl', 'req', '-newkey', 'rsa:2048', '-nodes', '-keyout', tempdirname+keyname, '-x509', '-days', expiration_period, '-out', tempdirname+certname]
    p = subprocess.Popen(
        cmd,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        shell=False
    )
    out, err = p.communicate('\n')

我还希望cert.pem文件是同一目录。 我该怎么办? 我正在使用python 2.7

使用以下方法解决了问题:

p = subprocess.Popen(
        cmd,
        stdin=subprocess.PIPE,
        shell=False
    )
#taking input like this
p.stdin.write("n")    
out, err = p.communicate('\n')

删除了以下几行,它开始工作:

stdout=subprocess.PIPE,
stderr=subprocess.PIPE,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM