[英]python subprocess with openssl
我在通過python的子進程將字符串傳遞給openssl命令行工具時遇到了很多麻煩,如下所示:
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 passphrase\n", timeout=2)
except:
process.kill() #openssl stays alive otherwise.
上面的代碼超時(在Popen中有和沒有std重定向)。 我可以正常通過終端使用openssl,但我真的需要能夠運行它作為我的python腳本的一部分。
任何幫助,將不勝感激。
openssl手冊頁上的 PASS PHRASE ARGUMENTS部分解釋了密碼短語輸入機制的工作原理。 為了使您的示例有效,您應該告訴openssl從stdin
獲取密碼。 以您的示例為起點,以下內容適用於我:
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("passphrase\n")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.