File: //ibin/dnsupd
#!/usr/bin/perl
# Global Command: Execute command on all servers in server list
$file_name = $ARGV[0];
$local_server = $ENV{HOSTNAME};
($hostname, $domain, $extension) = (split /\./, $local_server);
$local_server = $hostname;
$local_server =~ s/(\w+)/\u\L$1/g;
$backup_server = "garage";
$application = "DNS Updates";
$TPATH="/home/system/backup/live/" . $local_server. "/";
$SPATH="/ibin/conf/dns/";
$slave_path = "/var/named/chroot/var/named/slaves/";
$width = 120;
$print_line = "\033[37;44m" . "-" x $width . "\033[0m\n";
$print_line = "\033[37;44m\033[1m---------------------------------------------------------------------------------\033[0m\n";
#if ($local_server eq "Saturn" or $local_server eq "Camaro") {
if ($local_server eq "Camaro") {
system("chown root:named /var/named/chroot/var/named/*");
#-----< Print Header >--------------------------------------------------------------------
system("clear");
$print_info = "\033[37;44m You Are On Server: \033[1;33m" . $local_server . " " . $application;
$padding = &pad($print_info, 120 );
print $print_line;
print $print_info . $padding . "\n";
print $print_line;
print "\n";
print "\n";
system("cd /ibin/conf/dns/ && make");
#-----< Process DB >-----------------------------------------------------------------------
open( SERVERS,"/ibin/conf/server_list") || die("Unable to open server_list file!\n");
while($line = <SERVERS>) {
chomp($line);
next if $line =~ /#/;
(
$server,
$os_ver,
$cpu,
$dns_type,
$dns_server,
$dns_new
) = split(/\|/, $line);
next if $dns_server =~ /n/;
$server_name = $server;
$server_name =~ s/(\w+)/\u\L$1/g;
#-----< Erase remote Zones >------------------------------------------------------------
if($ARGV[0] eq "c") {
print "Cleanup Zone Files\n";
system ( "ssh $server rm -rf $slave_path/*" );
$cleanloop = "1";
}
#-----< Backup Routine >--------------------------------------------------------------------
if ($hostname eq $server) {
$backup_server = "garage";
$TPATH="/home/system/backup/live/" . $server. "/";
$print_info = "\033[37;44m Backing UP Configuration\033[0m\n" ;
$padding = &pad($print_info, 120 );
print $print_line;
print $print_info . $padding . "\n";
print $print_line;
system( "/ibin/backup_dns dns local");
system( "/ibin/backup_dns dns remote");
}
$print_info = "\033[37;44m Updating Server: \033[1;33m" . $server_name . " OS: " . $os_ver ;
$padding = &pad($print_info, 120 );
print $print_line;
print $print_info . $padding . "\n";
print $print_line;
if($ARGV[0] eq "c") {
print "\033[1;33m" . "Cleaning Zone Files" . "\033[1;33m \n";
#exit
}
#-----< Distribute conf file to ALL Servers >-------------------------------------------------------------------------
if ($dns_type eq "DNSC") {
$TPATH_ETC="/var/named/chroot/etc/";
$TPATH_NAMED="/var/named/chroot/var/named/";
} else {
$TPATH_ETC="/etc/";
$TPATH_ETC2="/var/named/chroot/etc/";
$TPATH_NAMED="/var/named/";
$TPATH_NAMED2="/var/named/chroot/var/named/";
}
# print "scp db.conf/" . $server . "-named.conf " . $server . ":${TPATH_ETC}named.conf\n";
# print "ssh " . $server . " /sbin/service named restart\n";
system("rsync -auv " . $SPATH . "db.conf/" . $server . "-named.conf " . $server . ":${TPATH_ETC}named.conf\n");
system("rsync -auv " . $SPATH . "db.conf/" . $server . "-named.conf " . $server . ":${TPATH_ETC2}named.conf\n");
#-----< Restart DNS Service >--------------------------------------------------------
if ($dns_new eq "n") {
system("ssh " . $server . " /etc/rc.d/init.d/named restart\n");
} else {
system("ssh " . $server . " systemctl restart named\n");
}
print "\n";
}
close(SERVERS);
exit;
} else {
print "Not Running on Saturn!\n";
}
sub pad {
my $text = $_[0];
my $length = length($text);
my $spaces = $_[1] - $length;
my $blank = "";
for($i = 1; $i <= $spaces; $i++) {
$blank .= " ";
}
return("$blank");
}