Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

murugu's scratchpad

by murugu (Curate)
on Jun 02, 2004 at 07:18 UTC ( #359238=scratchpad: print w/ replies, xml ) Need Help??

if ($str =~m#<p[^>]*>Visit our website at\s*<a href="http://www.Hachet +teBookGroup.com">www.HachetteBookGroup.com</a>\s*</p>#si) { print "\nError: Specification No: 08 - Hachette web site address in CO +PYRIGHT mismatch with standard for $direpub\n" }
use strict; use Net::Ping; no strict 'refs'; ###################################################################### +### ################# Constants (Global) ################################ +### ###################################################################### +### my $outputlog = "tkisclustercheck.log"; my $tracelog = "tkisclustertrace.log"; my $autolog = "tkisclusterauto.log"; my $REM_SH = "ssh"; my $LSMOD = "/sbin/lsmod"; my @out; my $SYSCTL = '/etc/sysctl.conf'; my $KERNEL_VALUE = 524288; my $SSHD = "/usr/sbin/sshd"; my $SHELL = "tcsh"; my @nodes = map {$ENV{$_->[0]}}sort {$a->[1] <=> $b->[1]}map { [ $_,m/ +(\d+)$/]}grep {/^MULTI_NODE\d+$/}keys %ENV; my @private = map {$ENV{$_->[0]}}sort {$a->[1] <=> $b->[1]}map { [ $_, +m/(\d+)$/]}grep {/^PRIVATE_NODE\d+$/}keys %ENV; my @vips = map {$ENV{$_->[0]}}sort {$a->[1] <=> $b->[1]}map { [ $_,m/( +\d+)$/]}grep {/^VIP_NODE\d+$/}keys %ENV; @nodes = map {(split/\./)[0]}@nodes; ###################################################################### +### ########## Create output and trace log and duplicate the Handle ###### +### ###################################################################### +### open (CLUSTER, ">$outputlog") or die "Unable to open the file $outputl +og : $!\n"; open (AUTO, ">$autolog") or die "Unable to open the file $autolog : $! +\n"; open (TRACE,">$tracelog") or die "Unable to open the file $tracelog : + $!\n"; local *STDOUT = *TRACE; open( STDERR, ">>&STDOUT"); my $HANDLE = "CLUSTER"; ###################################################################### +### ############### Lookup Checks for all the Node values ################ +### ###################################################################### +### &exec_cmd( "code" => ["lookup"] ); ###################################################################### +### ##################### Kernel Parameters ############################## +### ###################################################################### +### &exec_cmd( "header"=> "Checking Kernel Parameters", "cmd" => "cat $SYSCTL", "code" => ["kernel"], "nodes" => \@nodes, "keep_track" => 1 ); ###################################################################### +### ################# Check ssh run status ##### ######################## +### ###################################################################### +### &exec_cmd( "header" => "Checking the sshd availability", "cmd" => "ps -efw | egrep $SSHD | grep -v grep", printm => 1, "nodes" => \@nodes, "code" => ["sshd"], keep_track => 1 ); ###################################################################### +### ##################### Check the Shell ############################### +### ###################################################################### +### &exec_cmd( "header" => "Checking the shell type", cmd => "env | egrep SHELL", printm => 1, "nodes"=> \@nodes, keep_track => 1, code => ["shell"] ); &exec_cmd( header => "Checking Public/Private address entries", "code" => ["ifconfig"], nodes => \@nodes, keep_track => 1, cmd => "$IFCONFIG" ); close (TRACE); close (CLUSTER); close (AUTO); ###################################################################### +### ##################### Core Handler(subroutine Driver) ################ +### ###################################################################### +### sub exec_cmd { my %hash = @_; $hash{nodes}->[0] = 1 unless (defined $hash{nodes});#For standalon +e subs print $HANDLE "\n"; my @keep_track; print $HANDLE "\n$hash{header}\n" if (defined $hash{header}); #Prin +ts Header foreach my $n (@{$hash{nodes}}) { if (defined $hash{header}) { print TRACE "\n$hash{header} in node $n\n"; } if (defined $hash{cmd}){ @out = `$REM_SH $n $hash{cmd}`; #Command Execution } if (defined $hash{code}){ ##Pass Node Info to callback subroutine ## if (defined $hash{keep_track}) { push @keep_track, $hash{code}->[0]->($n); } else { ## Pass args from code block ### my $cnt = scalar @{$hash{code}}; $hash{code}->[0]->(@{$hash{code}}[1..$cnt-1] ); } } if ($hash{printm} == 1){ print TRACE @out; #Details of the command o/p } } if (defined $hash{keep_track}) { #General Tracker for combo pass/fa +il status my $pass = (grep {not $_}@keep_track)?"FAILED":"PASSED"; print $HANDLE "\nTEST $pass\n"; } @keep_track = (); #Resetting tracking value return; } ###################################################################### +### #################### Utility subroutines ############################# +### ###################################################################### +### sub lookup { print $_ "Checking nslookup values for all the nodes\n" for ("$HANDL +E", "TRACE"); eval { # Escape from dying print TRACE map {"Nslookup value for $_ is ".&nslookup($_)."\n"} +(@nodes,@private,@vips); my @dns = grep {not defined &nslookup($_) } (@nodes,@private,@vi +ps); if (@dns) { my $dns = join ':',@dns; print $HANDLE "The following nodes doesn't have nslookup confi +gured properly: $dns\n"; print $HANDLE "TEST FAILED\n"; } else { print $HANDLE "\nTEST PASSED\n"; } }; print TRACE "The Failure is due to $@\n" if ($@); } sub kernel { my $n = shift; return 0 unless (@out); my @kernel = grep {/net.core.[rw]mem_(max|default)/i && !/^#/} @out; my $fail = join $/, sort @kernel; print TRACE $/,$fail,$/; my $kernel = (grep { !/^$KERNEL_VALUE$/}map{m/(\d+)/}@kernel)?0:1; print TRACE "Node $n is having:\n$fail\n" unless ($kernel); return $kernel; } sub sshd { my $n = shift; my $pass = (grep {/$SSHD/i}@out)?1:0; print TRACE "Node $n is not having sshd running in it\n" unless ($pa +ss); return $pass; } sub shell { my $n = shift; my $pass = (grep {/$SHELL/i}@out)?1:0; print TRACE "Node $n is not having the $SHELL in it\n" unless ($pass) +; return $pass; } sub ifconfig { my $n = shift; return 0 unless (@out); my $value; { local $"; $value = "@out" }; my %ifconfig; my @ifc = split/\n\n/,$value; foreach my $i (@ifc) { chomp $i; my ($eth) = $i =~/^(\S+)/i; my ($addr) = $i =~/inet addr:\s*(\S+)/i; my ($mask) = $i =~/Mask:\s*(\S+)/i; $ifconfig{$addr} = [$eth,$mask]; } my ($pos) = grep {lc($nodes[$_]) eq lc($n)}(0..$#nodes); my ($public,$private) = ($nodes[$pos],$private[$pos]); my ($pub_ip, $pub_sub_eth, $priv_ip,$pubmask,$priv_sub_eth,$priv +mask); eval { $pub_ip = &nslookup($public); ($pub_sub_eth,$pubmask)=@{$ifconfig{$pub_ip}}; ($priv_ip) = &nslookup($private); ($priv_sub_eth,$privmask)=@{$ifconfig{$priv_ip}}; }; print TRACE "The subethernet value for Primary node is: $pub_sub_ +eth\n"; print TRACE "The Mask Value for Primary node is: $pubmask\n"; print TRACE "The subethernet value for Private node is: $priv_sub +_eth\n"; print TRACE "The Mask Value for Private node is: $privmask\n"; my $pass = (grep {not exists $ifconfig{$_}} ($pub_ip,$priv_ip))?0 +:1; print TRACE "Node $n doesnot have Public/Private address in ifco +nfig\n" unless ($pass); return $pass; }
my scratchpad
Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (8)
As of 2014-08-22 22:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (168 votes), past polls