#!/usr/bin/python # # add a new user to a Samba4 server # Copyright Andrew Tridgell 2005 # Copyright Jelmer Vernooij 2008 # Released under the GNU GPL version 3 or later # import os, sys # Find right directory when running from source tree sys.path.insert(0, "bin/python") import samba.getopt as options import optparse import pwd import sys from getpass import getpass from samba.auth import system_session from samba.samdb import SamDB parser = optparse.OptionParser("setpassword [username] [options]") sambaopts = options.SambaOptions(parser) parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) parser.add_option("--filter", help="LDAP Filter to set password on", type=str) parser.add_option("--newpassword", help="Set password", type=str) opts, args = parser.parse_args() # # print a message if quiet is not set # def message(text): if not opts.quiet: print text if len(args) == 0: parser.print_usage() sys.exit(1) password = opts.newpassword; if password is None: password = getpass("New Password: ") filter = opts.filter if filter is None: username = args[0] if username is None: print "Either username or --filter must be specified" filter = "(&(objectclass=user)(samAccountName=%s))" % (username) lp = sambaopts.get_loadparm() creds = credopts.get_credentials(lp) samdb = SamDB(url=lp.get("sam database"), session_info=system_session(), credentials=creds, lp=lp) samdb.setpassword(filter, password)