diff --git a/source4/scripting/python/samba/netcmd/user.py b/source4/scripting/python/samba/netcmd/user.py index cbac5af..16c546a 100644 --- a/source4/scripting/python/samba/netcmd/user.py +++ b/source4/scripting/python/samba/netcmd/user.py @@ -25,7 +25,7 @@ import sys, ldb from getpass import getpass from samba.auth import system_session from samba.samdb import SamDB -from samba import gensec +from samba import gensec, generate_random_password from samba.net import Net from samba.netcmd import ( @@ -47,6 +47,9 @@ class cmd_user_add(Command): Option("--must-change-at-next-login", help="Force password to be changed on next login", action="store_true"), + Option("--random-password", + help="Generate random password", + action="store_true"), Option("--use-username-as-cn", help="Force use of username as user's CN", action="store_true"), @@ -73,12 +76,15 @@ class cmd_user_add(Command): takes_args = ["username", "password?"] def run(self, username, password=None, credopts=None, sambaopts=None, - versionopts=None, H=None, must_change_at_next_login=None, + versionopts=None, H=None, must_change_at_next_login=None, random_password=None, use_username_as_cn=None, userou=None, surname=None, given_name=None, initials=None, profile_path=None, script_path=None, home_drive=None, home_directory=None, job_title=None, department=None, company=None, description=None, mail_address=None, internet_address=None, telephone_number=None, physical_delivery_office=None): + if random_password is not None: + password = generate_random_password(128, 255) + while 1: if password is not None and password is not '': break @@ -248,17 +254,23 @@ class cmd_user_setpassword(Command): Option("--must-change-at-next-login", help="Force password to be changed on next login", action="store_true"), + Option("--random-password", + help="Generate random password", + action="store_true"), ] takes_args = ["username?"] def run(self, username=None, filter=None, credopts=None, sambaopts=None, versionopts=None, H=None, newpassword=None, - must_change_at_next_login=None): + must_change_at_next_login=None, random_password=None): if filter is None and username is None: raise CommandError("Either the username or '--filter' must be specified!") - password = newpassword + if random_password is not None: + password = generate_random_password(128, 255) + else: + password = newpassword while 1: if password is not None and password is not '': break