userman interface to add user and change password pexpect fix
This changes addresses the following:
- Default SHELL set to /bin/sh
- password pexpect extra sendline
Resolves openbmc/openbmc#581
Change-Id: Ie17c839f167ae862eb7873989ea32d9dc8fa25b0
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/userman.py b/userman.py
index d99846c..2ab5097 100644
--- a/userman.py
+++ b/userman.py
@@ -157,9 +157,9 @@
if gecos: opts = " -g " + '"' + gecos + '"'
if groupname:
- cmd = "adduser " + opts + " " + " -G " + groupname + " " + username
+ cmd = "adduser " + opts + " " + " -G " + groupname + " " + "-s /bin/sh" + " " + username
else:
- cmd = "adduser " + opts + " " + username
+ cmd = "adduser " + opts + " " + "-s /bin/sh" + " " + username
prompts = ['New password: ', 'Retype password: ', 'Re-enter new password: ']
proc = pexpect.spawn (cmd)
@@ -223,14 +223,18 @@
if username not in users : raise ValueError("No such User: ", username)
cmd = "passwd" + " " + username
+ prompts = ['New password: ', 'Retype password: ', 'Re-enter new password: ']
proc = pexpect.spawn (cmd)
- proc.expect (['New password: ', 'Retype password: '])
+ proc.expect (prompts)
proc.sendline (passwd)
- proc.expect (['New password: ', 'Retype password: '])
+ proc.expect (prompts)
proc.sendline (passwd)
- proc.wait()
- return 0
+ if proc.expect(prompts + [pexpect.EOF]) != len(prompts):
+ proc.sendline (passwd)
+
+ r = proc.wait()
+ return r if r else 0
def main():
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)