When reading a password, if there is no tty, read from stdin instead.

This will allow one to pipe a password in:

echo -e "secret123\secret123\n" | ipa password someuser
This commit is contained in:
Rob Crittenden
2009-04-30 15:06:25 -04:00
parent d4076915cd
commit a7a16272b1

View File

@@ -393,14 +393,26 @@ class textui(backend.Backend):
raw_input(self.encode(prompt))
)
def read_password(self, label):
"""
Read a password either by prompting the user or from stdin depending
on whether there is a tty.
This will let you do something like: echo -e "foo\nfoo\n" | ipa passwd
"""
if sys.stdin.isatty():
return getpass.getpass(label)
else:
return sys.stdin.readline().strip()
def prompt_password(self, label):
"""
Prompt user for a password.
"""
try:
while True:
pw1 = getpass.getpass('%s: ' % label)
pw2 = getpass.getpass(
pw1 = self.read_password('%s: ' % label)
pw2 = self.read_password(
_('Enter %(label)s again to verify: ') % dict(label=label)
)
if pw1 == pw2: