簡體   English   中英

使用openssl的python子進程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM