Python 子进程只给出 1 个输出而不是 2 个
Python subprocess only giving 1 output instead of 2
我想使用 openssl 和 python 子进程生成 2 个证书,分别是 key.pem
和 cert.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,
我想使用 openssl 和 python 子进程生成 2 个证书,分别是 key.pem
和 cert.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,