コマンドを実行するためのpythonスクリプトを作成しています。これらのコマンドの中には、ユーザーがパスワードを入力する必要があるものがあります。標準入力にデータを入力しようとしましたが、機能しません。問題を表す 2 つの単純な python プログラムを次に示します。
入力.py
import getpass
print raw_input('text1:')
print getpass.getpass('pass1:')
print getpass.getpass('pass2:')
put_data.py
import subprocess
import getpass
def run(cmd, input=None):
stdin=None
if input:
stdin=subprocess.PIPE
p = subprocess.Popen(cmd, shell=True, stdin=stdin)
p.communicate(input)
if p.returncode:
raise Exception('Failed to run command %r' % cmd)
input ="""text1
password1
password2
"""
run('python test.py', input)
そして、ここに出力があります
[guest@host01 ~]# python put_data.py
text1:text1
pass1:
pass1 フィールドで停止します。ここに問題があります。パスワード フィールドにデータをフィードするためにデータを stdin に入れることができないのはなぜですか? パスワード フィールドにデータを書き込むにはどうすればよいですか?