/ / python podproces z openssl - python, openssl, subprocess

podprocesor Pythona z openssl - python, openssl, podproces

Mam wiele problemów z przekazaniem ciągu znaków do narzędzia wiersza poleceń openssl za pośrednictwem podprocesu Pythona w następujący sposób:

process = subprocess.Popen(
["openssl", "rsa", "-in", pathFile, "-out", "id_rsa.out"],
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
shell=False
)
try:
process.communicate("some passphrasen", timeout=2)
except:
process.kill() #openssl stays alive otherwise.

Powyższy kod wygasa (z i bezstd przekierowanie w Popen). Mogę używać openssl normalnie przez terminal, ale naprawdę muszę być w stanie uruchomić to jako część mojego skryptu Pythona.

Każda pomoc będzie doceniona.

Odpowiedzi:

3 dla odpowiedzi № 1

W sekcji PASS PHRASE ARGUMENTS on strona man openssl wyjaśnia, jak działa mechanizm wprowadzania hasła. Aby Twój przykład zadziałał, powinieneś powiedzieć openssl, aby odebrał hasło stdin. Używając twojego przykładu jako punktu wyjścia, następujące dla mnie działa:

process = subprocess.Popen(
["openssl", "rsa", "-in", pathFile, "-out", "id_rsa.out", "-passin", "stdin"],
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
shell=False
)
process.communicate("passphrasen")