私は以下のコマンドを実行すると、通常、ユーザの入力を求めます。どのようにしてPythonスクリプトでユーザーのやりとりを自動化できますか?私はPythonスクリプトのユーザ対話を自動化するにはどうすればいいですか?
os.system( "のOpenSSL REQ -new -x509 -key privkey.pemアウトこのcacert.pem -days 1095")
私は以下のコマンドを実行すると、通常、ユーザの入力を求めます。どのようにしてPythonスクリプトでユーザーのやりとりを自動化できますか?私はPythonスクリプトのユーザ対話を自動化するにはどうすればいいですか?
os.system( "のOpenSSL REQ -new -x509 -key privkey.pemアウトこのcacert.pem -days 1095")
使用subprocess.Popen
コマンドを開始し、その後、communicate
がユーザーの操作をシミュレートします。
import subprocess
process = subprocess.Popen(['openssl', 'req', '-new', ...],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
stdout, stderr = process.communicate(input='input1\ninput2')
この特定のコマンドでは、スクリプトに入力を入力するための自動化ツールは必要ありません。ファイルをパイプでパイプすることで、ユーザーの介入なしに実行できるはずです(Coldspeed氏のコメントのように)。
ほとんどのコマンドラインインターフェイスでは、パラメータ化された実行とほとんどのパラメータをスクリプトに組み込んだり、どこかの設定ファイルから読み込んだりすることができます。
"本当の"ユーザー操作が必要なコマンドラインツール(入力をパイプしたり、コマンドをパラメータ化したり、何らかの形でコマンドをビルドすることはできません)では、pexpectモジュールを使用して大成功を収めました。
'openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095