Подпроцесс Python дает только 1 вывод вместо 2 - PullRequest
0 голосов
/ 03 июня 2018

Я хочу сгенерировать 2 сертификата с использованием подпроцесса openssl и python, которые 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

1 Ответ

0 голосов
/ 03 июня 2018

Решил проблему с помощью:

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,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...