2 exec smbscript "$0" ${1+"$@"}
4 provision a Samba4 server
5 Copyright Andrew Tridgell 2005
6 Released under the GNU GPL v2 or later
9 options = new Object();
10 ok = GetOptions(ARGV, options,
13 "POPT_COMMON_VERSION",
32 println("Failed to parse options: " + options.ERROR);
36 libinclude("base.js");
37 libinclude("provision.js");
40 print a message if quiet is not set
44 if (options["quiet"] == undefined) {
45 print(vsprintf(arguments));
58 --realm REALM set realm
59 --domain DOMAIN set domain
60 --domain-guid GUID set domainguid (otherwise random)
61 --domain-sid SID set domainsid (otherwise random)
62 --host-name HOSTNAME set hostname
63 --host-ip IPADDRESS set ipaddress
64 --host-guid GUID set hostguid (otherwise random)
65 --invocationid GUID set invocationid (otherwise random)
66 --adminpass PASSWORD choose admin password (otherwise random)
67 --krbtgtpass PASSWORD choose krbtgt password (otherwise random)
68 --machinepass PASSWORD choose machine password (otherwise random)
69 --root USERNAME choose 'root' unix username
70 --nobody USERNAME choose 'nobody' user
71 --nogroup GROUPNAME choose 'nogroup' group
72 --wheel GROUPNAME choose 'wheel' privileged group
73 --users GROUPNAME choose 'users' group
76 You must provide at least a realm and domain
82 if (options['host-name'] == undefined) {
83 options['host-name'] = hostname();
89 if (options["realm"] == undefined ||
90 options["domain"] == undefined ||
91 options["host-name"] == undefined) {
95 var subobj = provision_guess();
97 var key = strupper(join("", split("-", r)));
98 subobj[key] = options[r];
101 message("Provisioning for %s in realm %s\n", subobj.DOMAIN, subobj.REALM);
102 message("Using administrator password: %s\n", subobj.ADMINPASS);
103 provision(subobj, message);