r8459: move to the more portable script execution method
[jra/samba/.git] / source4 / setup / provision
1 #!/bin/sh
2 exec smbscript "$0" ${1+"$@"}
3 /*
4         provision a Samba4 server
5         Copyright Andrew Tridgell 2005
6         Released under the GNU GPL v2 or later
7 */
8
9 options = new Object();
10 ok = GetOptions(ARGV, options, 
11                 "POPT_AUTOHELP",
12                 "POPT_COMMON_SAMBA",
13                 "POPT_COMMON_VERSION",
14                 'realm=s',
15                 'domain=s',
16                 'domain-guid=s',
17                 'domain-sid=s',
18                 'host-name=s',
19                 'host-ip=s',
20                 'host-guid=s',
21                 'invocationid=s',
22                 'adminpass=s',
23                 'krbtgtpass=s',
24                 'machinepass=s',
25                 'root=s',
26                 'nobody=s',
27                 'nogroup=s',
28                 'wheel=s',
29                 'users=s',
30                 'quiet');
31 if (ok == false) {
32    println("Failed to parse options: " + options.ERROR);
33    return -1;
34 }
35
36 libinclude("base.js");
37 libinclude("provision.js");
38
39 /*
40   print a message if quiet is not set
41 */
42 function message() 
43 {
44         if (options["quiet"] == undefined) {
45                 print(vsprintf(arguments));
46         }
47 }
48
49 /*
50  show some help
51 */
52 function ShowHelp()
53 {
54         print("
55 Samba4 provisioning
56
57 provision [options]
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
74  --quiet                        Be quiet
75
76 You must provide at least a realm and domain
77
78 ");
79         exit(1);
80 }
81
82 if (options['host-name'] == undefined) {
83         options['host-name'] = hostname();
84 }
85
86 /*
87    main program
88 */
89 if (options["realm"] == undefined ||
90     options["domain"] == undefined ||
91     options["host-name"] == undefined) {
92         ShowHelp();
93 }
94
95 var subobj = provision_guess();
96 for (r in options) {
97         var key = strupper(join("", split("-", r)));
98         subobj[key] = options[r];
99 }
100
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);
104 message("All OK\n");
105 return 0;