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)