File: //ibin/pbx-distr
#!/usr/bin/perl
# Global Command: Execute command on all servers in server list
$file_name = $ARGV[0];
if (! defined $file_name )
{
print "No Parameters Specified\n";
exit
};
$local_server = $ENV{HOSTNAME};
($hostname, $domain, $extension) = (split /\./, $local_server);
$local_server = $hostname;
$local_server =~ s/(\w+)/\L$1/g;
$width = 150;
$top_print_line = "\033[37;44m" . " " x $width . "\033[0m\n";
$bot_print_line = "\033[37;44m" . "_" x $width . "\033[0m\n";
#-----< Print Header >--------------------------------------------------------------------
system("clear");
$message = " You Are On Server: ";
$info = $local_server;
$print_info = $message . $info ;
$padding = &pad($print_info, $width );
print $top_print_line;
print "\033[37;44m" . $message . "\033[1;33m" . $info . $padding . "\n";
print $bot_print_line;
print "\n\n";
#-----< Process DB >-----------------------------------------------------------------------
open( SERVERS,"/ibin/conf/pbx_server_list") || die("Unable to open server_list file!\n");
while($line = <SERVERS>) {
chomp($line);
next if $line =~ /#/;
(
$server,
$os_ver,
$cpu,
$box
) = split(/\|/, $line);
next if $local_server eq $server;
$server_name = $server;
$server_name =~ s/(\w+)/\u\L$1/g;
#----------------------
$message = " Updating Server: ";
$info = $server_name . " -- OS:" . $os_ver . " CPU:" . $cpu . " Box:" . $box;
# $print_info = " Updating Server: " . $server_name . " OS:" . $os_ver . " CPU:" . $cpu . " Box:" . $box;
$padding = &pad($message . $info, $width );
print $top_print_line;
print "\033[37;44m" . $message . "\033[1;33m" . $info . $padding . "\n";
print $bot_print_line;
#----------------------
# print "scp " . $file_name . " " . $server . ":" . $file_name ."\n";
system( "rsync -auv " . $file_name . " " . $server . ":" . $file_name ."\n");
print "\n";
}
close(SERVERS);
sub pad {
my $text = $_[0];
my $length = length($text);
my $spaces = $_[1] - $length;
my $blank = "";
for($i = 1; $i <= $spaces; $i++) {
$blank .= " ";
}
return("$blank");
}