mirror of
https://github.com/samba-team/samba.git
synced 2025-01-22 22:04:08 +03:00
r1585: add dcpromo.pl start, this should be configure a
samba4 ads domain controller's ldb database metze
This commit is contained in:
parent
96bf4da3ed
commit
932e22badd
225
source/script/dcpromo.pl
Executable file
225
source/script/dcpromo.pl
Executable file
@ -0,0 +1,225 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
###################################################
|
||||
# package to generate samba ads configuration
|
||||
# Copyright metze@samba.org 2004
|
||||
|
||||
# released under the GNU GPL
|
||||
|
||||
use strict;
|
||||
use Data::Dumper;
|
||||
|
||||
sub print_options($$) {
|
||||
my $ads = shift;
|
||||
my $ctx = shift;
|
||||
my @arr;
|
||||
my $i;
|
||||
my $len;
|
||||
|
||||
print "options:\n";
|
||||
|
||||
@arr = @{$ctx};
|
||||
$len = $#arr;
|
||||
for($i = 0; $i <= $len; $i++) {
|
||||
my $val = $ctx->[$i];
|
||||
print "\t".$i.": ".$val->{TEXT}."\n";
|
||||
}
|
||||
|
||||
print "choise []:";
|
||||
}
|
||||
|
||||
sub read_option($$) {
|
||||
my $ads = shift;
|
||||
my $ctx = shift;
|
||||
my $val;
|
||||
|
||||
$val = <STDIN>;
|
||||
|
||||
return $val;
|
||||
}
|
||||
|
||||
sub call_option($$$) {
|
||||
my $ads = shift;
|
||||
my $ctx = shift;
|
||||
my $switch = shift;
|
||||
my $val;
|
||||
my $funcref;
|
||||
|
||||
$val = $ctx->[$switch];
|
||||
|
||||
$funcref = $val->{ACTION};
|
||||
|
||||
&$funcref($ads);
|
||||
}
|
||||
|
||||
sub ask_option($$) {
|
||||
my $ads = shift;
|
||||
my $ctx = shift;
|
||||
my $ret;
|
||||
|
||||
print_options($ads, $ctx);
|
||||
|
||||
$ret = read_option($ads, $ctx);
|
||||
|
||||
call_option($ads, $ctx, $ret);
|
||||
}
|
||||
|
||||
sub create_ads_tree($) {
|
||||
my $ads = shift;
|
||||
|
||||
print "Create ADS Domain:\n";
|
||||
print Dumper($ads);
|
||||
}
|
||||
|
||||
sub do_new_domain_in_entire_structure($) {
|
||||
my $ads;
|
||||
my $domain_dns;
|
||||
my $domain_netbios;
|
||||
|
||||
$ads->{NEW_DOMAIN} = 1;
|
||||
$ads->{NEW_FOREST} = 1;
|
||||
|
||||
print "full dns name of the new domain []:";
|
||||
$domain_dns = <STDIN>;
|
||||
chomp $domain_dns;
|
||||
$ads->{FULL_DNS_NAME} = $domain_dns;
|
||||
|
||||
print "netbios name of the new domain []:";
|
||||
$domain_netbios = <STDIN>;
|
||||
chomp $domain_netbios;
|
||||
$ads->{NETBIOS} = $domain_netbios;
|
||||
|
||||
create_ads_tree($ads);
|
||||
}
|
||||
|
||||
sub do_sub_domain_in_existing_structure($) {
|
||||
my $ads = shift;
|
||||
my $user_name;
|
||||
my $user_domain;
|
||||
my $user_password;
|
||||
my $top_dns;
|
||||
my $domain_dns;
|
||||
my $domain_netbios;
|
||||
my $db_folder;
|
||||
my $db_logs;
|
||||
my $sysvol_folder;
|
||||
my $admin_password1;
|
||||
my $admin_password2;
|
||||
|
||||
$ads->{NEW_DOMAIN} = 1;
|
||||
$ads->{NEW_FOREST} = 0;
|
||||
|
||||
print "User Name []:";
|
||||
$user_name = <STDIN>;
|
||||
chomp $user_name;
|
||||
$ads->{USER}{NAME} = $user_name;
|
||||
|
||||
print "User Domain []:";
|
||||
$user_domain = <STDIN>;
|
||||
chomp $user_domain;
|
||||
$ads->{USER}{DOMAIN} = $user_domain;
|
||||
|
||||
print "User Password []:";
|
||||
$user_password = <STDIN>;
|
||||
chomp $user_password;
|
||||
$ads->{USER}{PASSWORD} = $user_password;
|
||||
|
||||
print "full dns name of the top domain []:";
|
||||
$top_dns = <STDIN>;
|
||||
chomp $top_dns;
|
||||
$ads->{TOP_DNS_NAME} = $top_dns;
|
||||
|
||||
print "suffix of the new domain []:";
|
||||
$domain_dns = <STDIN>;
|
||||
chomp $domain_dns;
|
||||
$ads->{FULL_DNS_NAME} = $domain_dns.".".$top_dns;
|
||||
|
||||
print "netbios name of the new domain []:";
|
||||
$domain_netbios = <STDIN>;
|
||||
chomp $domain_netbios;
|
||||
$ads->{NETBIOS} = $domain_netbios;
|
||||
|
||||
print "folder for database files []:";
|
||||
$db_folder = <STDIN>;
|
||||
chomp $db_folder;
|
||||
$ads->{DB_FOLDER} = $db_folder;
|
||||
|
||||
print "folder for database logs []:";
|
||||
$db_logs = <STDIN>;
|
||||
chomp $db_logs;
|
||||
$ads->{DB_LOGS} = $db_logs;
|
||||
|
||||
print "folder for SYSVOL []:";
|
||||
$sysvol_folder = <STDIN>;
|
||||
chomp $sysvol_folder;
|
||||
$ads->{SYSVOL_FOLDER} = $sysvol_folder;
|
||||
|
||||
#
|
||||
# test DNS here
|
||||
#
|
||||
|
||||
#
|
||||
# test mixed/native here
|
||||
#
|
||||
|
||||
print "Administrator password []:";
|
||||
$admin_password1 = <STDIN>;
|
||||
chomp $admin_password1;
|
||||
print "retype Administrator password []:";
|
||||
$admin_password2 = <STDIN>;
|
||||
chomp $admin_password2;
|
||||
if ($admin_password1 eq $admin_password2) {
|
||||
$ads->{ADMIN_PASSWORD} = $admin_password1;
|
||||
} else {
|
||||
$ads->{ADMIN_PASSWORD} = "";
|
||||
}
|
||||
|
||||
create_ads_tree($ads);
|
||||
}
|
||||
|
||||
sub do_sub_structure_in_global_structure($) {
|
||||
print "go on with do_sub_structure_in_global_structure\n";
|
||||
}
|
||||
|
||||
sub do_new_domain($) {
|
||||
my $ads = shift;
|
||||
my $ctx;
|
||||
|
||||
$ctx->[0]{TEXT} = "new domain in entire structure";
|
||||
$ctx->[0]{ACTION} = \&do_new_domain_in_entire_structure;
|
||||
|
||||
$ctx->[1]{TEXT} = "sub domain in existing structure";
|
||||
$ctx->[1]{ACTION} = \&do_sub_domain_in_existing_structure;
|
||||
|
||||
$ctx->[2]{TEXT} = "sub structure in global structure";
|
||||
$ctx->[2]{ACTION} = \&do_sub_structure_in_global_structure;
|
||||
|
||||
ask_option($ads ,$ctx);
|
||||
}
|
||||
|
||||
sub do_existing_domain($) {
|
||||
print "go on with do existing domain\n";
|
||||
}
|
||||
|
||||
sub ask_new_or_exist_domain($) {
|
||||
my $ads = shift;
|
||||
my $ctx;
|
||||
|
||||
$ctx->[0]{TEXT} = "new domain";
|
||||
$ctx->[0]{ACTION} = \&do_new_domain;
|
||||
|
||||
$ctx->[1]{TEXT} = "existing domain";
|
||||
$ctx->[1]{ACTION} = \&do_existing_domain;
|
||||
|
||||
ask_option($ads, $ctx);
|
||||
}
|
||||
|
||||
sub main {
|
||||
my $ads;
|
||||
|
||||
$ads->{ADS_TREE} = 1;
|
||||
|
||||
ask_new_or_exist_domain($ads);
|
||||
}
|
||||
|
||||
main();
|
@ -31,6 +31,8 @@ sub randguid()
|
||||
return sprintf("%08x-%04x-%04x-%04x-%08x%04x", $r1, $r2, $r3, $r4, $r5, $r6);
|
||||
}
|
||||
|
||||
my $domainguid = randguid();
|
||||
|
||||
sub randsid()
|
||||
{
|
||||
return sprintf("S-1-5-21-%d-%d-%d",
|
||||
@ -118,4 +120,3 @@ while ($data =~ /(.*?)\$\{(\w*)\}(.*)/s) {
|
||||
}
|
||||
|
||||
print $res . $data;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user