2017-06-21 83 views
0

當我執行下面的命令時,它通常會詢問用戶輸入。我們如何自動化Python腳本中的用戶交互。我們如何自動化Python腳本中的用戶交互

使用os.system( 「OpenSSL的REQ -new -x509 -key privkey.pem -out cacert.pem -days 1095」)

+0

'openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

回答

1

subprocess.Popen使用來發起該命令,然後communicate以模擬用戶交互。

import subprocess 

process = subprocess.Popen(['openssl', 'req', '-new', ...], 
       stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
stdout, stderr = process.communicate(input='input1\ninput2') 
0

對於該特定命令,您不應該需要任何自動化工具來將輸入提供給腳本。管理一個文件應該允許它在沒有用戶交互的情況下執行(就像Coldspeed在他的評論中說的)。

大多數命令行界面允許參數化執行以及大部分參數,您可以將其構建到腳本中或從某個配置文件中讀取它們。

對於那些需要「真正」用戶交互的命令行工具(即不能管道輸入,參數化或以某種方式將其構建到命令本身中),我使用pexpect模塊取得了巨大成功。

相關問題