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 = GetOptions(ARGV,
12 "POPT_COMMON_VERSION",
32 if (options == undefined) {
33 println("Failed to parse options");
37 libinclude("base.js");
38 libinclude("provision.js");
41 print a message if quiet is not set
45 if (options["quiet"] == undefined) {
46 print(vsprintf(arguments));
59 --realm REALM set realm
60 --domain DOMAIN set domain
61 --domain-guid GUID set domainguid (otherwise random)
62 --domain-sid SID set domainsid (otherwise random)
63 --host-name HOSTNAME set hostname
64 --host-ip IPADDRESS set ipaddress
65 --host-guid GUID set hostguid (otherwise random)
66 --invocationid GUID set invocationid (otherwise random)
67 --adminpass PASSWORD choose admin password (otherwise random)
68 --krbtgtpass PASSWORD choose krbtgt password (otherwise random)
69 --machinepass PASSWORD choose machine password (otherwise random)
70 --root USERNAME choose 'root' unix username
71 --nobody USERNAME choose 'nobody' user
72 --nogroup GROUPNAME choose 'nogroup' group
73 --wheel GROUPNAME choose 'wheel' privileged group
74 --users GROUPNAME choose 'users' group
76 --blank do not add users or groups, just the structure
78 You must provide at least a realm and domain
84 if (options['host-name'] == undefined) {
85 options['host-name'] = hostname();
91 if (options["realm"] == undefined ||
92 options["domain"] == undefined ||
93 options["host-name"] == undefined) {
97 /* cope with an initially blank smb.conf */
98 var lp = loadparm_init();
99 lp.set("realm", options.realm);
100 lp.set("workgroup", options.domain);
103 var subobj = provision_guess();
105 var key = strupper(join("", split("-", r)));
106 subobj[key] = options[r];
109 var blank = (options["blank"] != undefined);
111 message("Provisioning for %s in realm %s\n", subobj.DOMAIN, subobj.REALM);
112 message("Using administrator password: %s\n", subobj.ADMINPASS);
113 provision(subobj, message, blank);