diff options
-rw-r--r-- | source4/scripting/python/samba/netcmd/user.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/source4/scripting/python/samba/netcmd/user.py b/source4/scripting/python/samba/netcmd/user.py index b93996e152..b13bc0d606 100644 --- a/source4/scripting/python/samba/netcmd/user.py +++ b/source4/scripting/python/samba/netcmd/user.py @@ -194,6 +194,38 @@ class cmd_user_setexpiry(Command): +class cmd_user_password(Command): + """Change password for a user account (the one provided in authentication)""" + + synopsis = "%prog user password [options]" + + takes_options = [ + Option("--newpassword", help="New password", type=str), + ] + + def run(self, credopts=None, sambaopts=None, versionopts=None, + newpassword=None): + + lp = sambaopts.get_loadparm() + creds = credopts.get_credentials(lp) + + # FIXME: How to ensure user is authenticated before prompting for new password? + net = Net(creds, lp, server=credopts.ipaddress) + + password = newpassword + while 1: + if password is not None and password is not '': + break + password = getpass("New Password: ") + + try: + net.change_password(password) + except Exception, msg: + raise CommandError("Failed to change password : %s" % msg) + print "Changed password OK" + + + class cmd_user_setpassword(Command): """(Re)sets the password of a user account""" @@ -252,4 +284,5 @@ class cmd_user(SuperCommand): subcommands["delete"] = cmd_user_delete() subcommands["enable"] = cmd_user_enable() subcommands["setexpiry"] = cmd_user_setexpiry() + subcommands["password"] = cmd_user_password() subcommands["setpassword"] = cmd_user_setpassword() |