Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2010
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.66 KB | None | 0 0
  1. use strict;
  2. use warnings;
  3.  
  4. my %cus_name_db;
  5. my $mysql_ds_file = "/nas01/SANproduction/APP_DIR/jboss/server/dulea/deploy/mysqlds.xml";
  6. my @allowed_port_list = ('2880', '3880', '4880', '5880', '6880', '7880');
  7. my $complete_output;
  8.  
  9. main();
  10.  
  11. sub main {
  12.         read_cus_name_db();
  13.         open(APP_SERVER, "app_servers.txt") or die "Cannot open app_servers.txt\n";
  14.         #print the headers. I know this is dirty.
  15.         #print "Appserver, Free ports ...\n";
  16.         my @app_servers = <APP_SERVER>;
  17.         chomp @app_servers;
  18.         foreach my $app_server (@app_servers) {
  19.                 find_app_server_data($app_server);
  20.         }
  21.         #print "$complete_output";
  22. }
  23.  
  24. sub find_app_server_data {
  25.         my $app_server = shift @_;
  26.         my @app_server_output = `ssh $app_server ~/bin/perl/get_app_server_info.pl`;
  27.         my %ports_used;
  28.         chomp @app_server_output;
  29.         #print @app_server_output;
  30.         foreach my $raw_data (@app_server_output) {
  31.                 my ($ucn, $app_dir, $app_jboss_port) = split(/,/, $raw_data);
  32.                 my $db_name;
  33.                 $app_dir =~ s/^\s+//; #remove leading spaces
  34.                 $app_jboss_port =~ s/^\s+//; #remove leading spaces
  35.                 my $db_file = $mysql_ds_file;
  36.                 $db_file =~ s/APP_DIR/$app_dir/;
  37.                 my $connection_url = `grep connection-url $db_file`;
  38.                 #print $connection_url;
  39.                 if ($connection_url =~ /:55883\/(.*?)\?useUnicode/) {                        $db_name = $1;
  40.                 }
  41.                 }
  42.                 my $customer_name = $cus_name_db{$ucn};
  43.                 #print "$ucn, $app_server, $db_name, $customer_name\n";
  44.                 $ports_used{$app_jboss_port} = $app_jboss_port;
  45.         }
  46.         print_port_usage_table($app_server, \%ports_used);
  47. }
  48.  
  49. sub read_cus_name_db {
  50.  
  51.     open(CUS_NAME_CSV, "customer_name_db.csv") or
  52.         die "Cannot open customer_name_db.csv\n";
  53.     while (<CUS_NAME_CSV>) {
  54.         my ($key, $value)= split(/,/);
  55.         chomp $value;
  56.         $cus_name_db{$key} = $value;
  57.     }
  58.  
  59. }
  60.  
  61. sub print_port_usage_table {
  62.         my $app_server = shift @_;
  63.         my $used_ports = shift @_;
  64.  
  65.         #print "$app_server: ";
  66.         $complete_output .= "$app_server: ";
  67.         foreach my $port (@allowed_port_list) {
  68.                 #print "$used_ports->{'2880'}";
  69.                 unless ($used_ports->{$port}) {
  70.                         #print "$port ";
  71.                         $complete_output .= "$port ";
  72.                 }
  73.         }
  74.         #print "\n";
  75.         $complete_output .= "\n"; "|/bin/mail -s FreePorts zog\@geeemail.com" || die "mail failed: $!\n";
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement