Как перенаправить данные в «getpass», например, ввести пароль?

Я пишу скрипт на Python для запуска какой-то команды. Некоторые из этих команд требуют от пользователя ввода пароля, я пытался ввести данные в их стандартный ввод, но это не сработало. Вот две простые программы на Python, которые представляют проблему

input.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. Вот в чем проблема: почему я не могу поместить данные в стандартный ввод для подачи данных в поле пароля? Как я могу записать данные в поля пароля?

6
задан Fang-Pen Lin 28 January 2011 в 09:41
поделиться