1 #!/usr/bin/env smbscript
3 provision a Samba4 server
4 Copyright Andrew Tridgell 2005
5 Released under the GNU GPL v2 or later
8 options = new Object();
9 ok = GetOptions(ARGV, options,
12 "POPT_COMMON_VERSION",
31 println("Failed to parse options: " + options.ERROR);
35 libinclude("base.js");
36 libinclude("provision.js");
39 print a message if quiet is not set
43 if (options["quiet"] == undefined) {
44 print(vsprintf(arguments));
57 --realm REALM set realm
58 --domain DOMAIN set domain
59 --domain-guid GUID set domainguid (otherwise random)
60 --domain-sid SID set domainsid (otherwise random)
61 --host-name HOSTNAME set hostname
62 --host-ip IPADDRESS set ipaddress
63 --host-guid GUID set hostguid (otherwise random)
64 --invocationid GUID set invocationid (otherwise random)
65 --adminpass PASSWORD choose admin password (otherwise random)
66 --krbtgtpass PASSWORD choose krbtgt password (otherwise random)
67 --machinepass PASSWORD choose machine password (otherwise random)
68 --root USERNAME choose 'root' unix username
69 --nobody USERNAME choose 'nobody' user
70 --nogroup GROUPNAME choose 'nogroup' group
71 --wheel GROUPNAME choose 'wheel' privileged group
72 --users GROUPNAME choose 'users' group
75 You must provide at least a realm and domain
81 if (options['host-name'] == undefined) {
82 options['host-name'] = hostname();
88 if (options["realm"] == undefined ||
89 options["domain"] == undefined ||
90 options["host-name"] == undefined) {
94 var subobj = provision_guess();
96 var key = strupper(join("", split("-", r)));
97 subobj[key] = options[r];
100 message("Provisioning for %s in realm %s\n", subobj.DOMAIN, subobj.REALM);
101 message("Using administrator password: %s\n", subobj.ADMINPASS);
102 provision(subobj, message);