svn commit: samba r8319 - in branches/SAMBA_4_0/source/setup: .

tridge at samba.org tridge at samba.org
Mon Jul 11 09:20:47 GMT 2005


Author: tridge
Date: 2005-07-11 09:20:47 +0000 (Mon, 11 Jul 2005)
New Revision: 8319

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8319

Log:
the start of a provision script in ejs. This is why I've been adding
so many functions lately.

so far it just parses options, works out the host IP, and user and group names

Added:
   branches/SAMBA_4_0/source/setup/provision


Changeset:
Added: branches/SAMBA_4_0/source/setup/provision
===================================================================
--- branches/SAMBA_4_0/source/setup/provision	2005-07-11 09:19:50 UTC (rev 8318)
+++ branches/SAMBA_4_0/source/setup/provision	2005-07-11 09:20:47 UTC (rev 8319)
@@ -0,0 +1,150 @@
+#!/usr/bin/env smbscript
+/*
+	provision a Samba4 server
+	Copyright Andrew Tridgell 2005
+	Released under the GNU GPL v2 or later
+*/
+
+var options = new Object();
+ok = GetOptions(ARGV, options, 
+		"POPT_AUTOHELP",
+		"POPT_COMMON_SAMBA",
+		"POPT_COMMON_VERSION",
+		'realm=s',
+		'domain=s',
+		'domain-guid=s',
+		'domain-sid=s',
+		'host-name=s',
+		'host-ip=s',
+		'host-guid=s',
+		'invocationid=s',
+		'adminpass=s',
+		'krbtgtpass=s',
+		'machinepass=s',
+		'root=s',
+		'nobody=s',
+		'nogroup=s',
+		'wheel=s',
+		'users=s',
+		'outputdir=s',
+		'quiet');
+if (ok == false) {
+   println("Failed to parse options: " + options.ERROR);
+   return -1;
+}
+
+libinclude("base.js");
+
+/*
+  print a message if quiet is not set
+*/
+function message(s) 
+{
+	if (options["quiet"] == undefined) {
+		println(s);
+	}
+}
+
+/*
+ show some help
+*/
+function ShowHelp()
+{
+	print("
+Samba4 provisioning
+
+provision.pl [options]
+ --realm	REALM		set realm
+ --domain	DOMAIN		set domain
+ --domain-guid	GUID		set domainguid (otherwise random)
+ --domain-sid	SID		set domainsid (otherwise random)
+ --host-name	HOSTNAME	set hostname
+ --host-ip	IPADDRESS	set ipaddress
+ --host-guid	GUID		set hostguid (otherwise random)
+ --invocationid	GUID		set invocationid (otherwise random)
+ --outputdir	OUTPUTDIR	set output directory
+ --adminpass	PASSWORD	choose admin password (otherwise random)
+ --krbtgtpass	PASSWORD	choose krbtgt password (otherwise random)
+ --machinepass	PASSWORD	choose machine password (otherwise random)
+ --root         USERNAME	choose 'root' unix username
+ --nobody	USERNAME	choose 'nobody' user
+ --nogroup	GROUPNAME	choose 'nogroup' group
+ --wheel	GROUPNAME	choose 'wheel' privileged group
+ --users	GROUPNAME	choose 'users' group
+ --quiet			Be quiet
+
+You must provide at least a realm and domain
+
+");
+	exit(1);
+}
+
+/*
+   main program
+*/
+if (options["realm"] == undefined ||
+    options["domain"] == undefined ||
+    options["host-name"] == undefined) {
+	ShowHelp();
+}
+
+printVars(options);
+
+options.realm        = strlower(options.realm);
+options['host-name'] = strlower(options['host-name']);
+options.domain       = strupper(options.domain);
+options.netbiosname  = strupper(options.hostname);
+
+if (options.hostip == undefined) {
+	var list = IfaceList();
+	options.hostip = list[0];
+}
+
+message("Provisioning for " + options.domain + " in realm " + options.realm);
+
+if (options["root"] == undefined) {
+	options.root = "root";
+}
+
+if (options["nobody"] == undefined) {
+	if (getpwnam("nobody") != undefined) {
+		options.nobody = "nobody";
+	}
+}
+
+printVars(options);
+return 0;
+
+/*
+
+if (!$opt_nogroup) {
+	if (defined getgrnam("nogroup")) {
+		$opt_nogroup = "nogroup";
+	} elsif (defined getgrnam("nobody")) {
+		$opt_nogroup = "nobody";
+	}
+}
+
+if (!$opt_wheel) {
+	if (defined getgrnam("wheel")) {
+		$opt_wheel = "wheel";
+	} elsif (defined getgrnam("root")) {
+		$opt_wheel = "root";
+	}
+}
+
+if (!$opt_users) {
+	if (defined getgrnam("users")) {
+		$opt_users = "users";
+	} elsif (defined getgrnam("guest")) {
+		$opt_users = "guest";
+	} elsif (defined getgrnam("other")) {
+		$opt_users = "other";
+	}
+}
+
+$opt_nobody || die "Unable to determine a user for 'nobody'\n";
+$opt_nogroup || die "Unable to determine a group for 'nogroup'\n";
+$opt_users || die "Unable to determine a group for 'users'\n";
+$opt_wheel || die "Unable to determine a group for 'wheel'\n";
+*/


Property changes on: branches/SAMBA_4_0/source/setup/provision
___________________________________________________________________
Name: svn:executable
   + *



More information about the samba-cvs mailing list