#!C:\Perl\bin\perl.exe use Win32; use IO::Handle; use File::Find; use strict; use warnings; use File::Copy qw(copy); #################################################################################### #This script is created to put the servers in unplanned outage as part of the tasks# #that are received to stop the monitoring on the servers #due to some maintenance activity on the servers. # # # #expect values 'on|off' ($SEC,$MIN,$HOUR, $DAY, $MON, $YEAR)= (localtime) [0..6]; $year=$YEAR+1900; $month=$MON+1; $day=$DAY; $date="$year\_$month\_$day"; $LOG="E:/Temp/inyrohs/maintenanceMode_$date.log"; my $tempfile="E:/Temp/inyrohs/temp/outagenodes_temp.txt"; my $serverlist="E:/Temp/INYROHS/serverlist.txt"; open( MYFILE, "; close MYFILE; open ( MYTEMPLIST, "; close MYTEMPLIST; print "@outagenodes\n"; #Below subroutine call is to delete the temp file if already existing so that the outage is not run on the previously entered servers. deleteTemp($tempfile,$serverlist); open (LOG,">> $LOG") or die "Can't open $LOG file: $!\n"; printf LOG ("\nTime is %02d:%02d:%02d.\nStarting the maintenance mode process to turn $maintMode outages.\n\n", $HOUR, $MIN, $SEC); print "$date \n"; print "starting the process \n"; my $maintMode=$ARGV[0]; chomp($maintmode); print "maintMode: $maintMode:\n"; foreach $NODES (@tempnodes) { printLog("Node: $NODES, processing...\n"); if($maintMode =~ m/on/) { print "entered loop \n"; $cmd="ovownodeutil -outage_node -unplanned -disable_heartbeat -delete_msgs -node_name $NODES -$maintMode "; print "$cmd\n"; system($cmd); print "done with command"; } elsif($maintMode=~ m/off/) { printLog("Putting the server $NODES in the outage.\n"); $cmd="ovownodeutil.cmd -outage_node -unplanned -disable_heartbeat -delete_msgs -node_name $NODES -$maintMode"; #$cmdstopopcmona="ovdeploy -cmd "ovc -stop opcmona" -host $NODES"; #$cmdstopopcle="ovdeploy -cmd "ovc -start opcle" -host $NODES"; #$cmdstartopcmona="ovdeploy -cmd "ovc -start opcmona" -host $NODES"; #$cmdstartopcle="ovdeploy -cmd "ovc -start opcle" -host $NODES"; # $cmdstart="opcragt -start $NODES"; print "$cmd\n"; system($cmd); # print "$cmdstopopcmona\n"; # # system($cmdstopopcmona); # # print "$cmdstopopcle"; # system($cmdstopopcle); # print "$cmdstartopcle\n"; # system($cmdstartopcle); # #print "$cmdstart\n"; # system($cmd); # system($start); } } sub printLog { my ($logLine) = @_; chomp($logLine); $logLine=$logLine . "\n"; print "$logLine"; print LOG "$logLine"; } sub deletTemp { my ($delTemp,$serverlist)=@_; print "temp: $delTemp\n"; print "serv: $serverlist\n"; unlink $delTemp; copy($serverlist,$delTemp); } #### E:\Temp\inyrohs>perl outage_nodes.pl on Possible unintended interpolation of @outagenodes in string at outage_nodes.pl line 48. Variable "$LOG" is not imported at outage_nodes.pl line 59. Global symbol "$SEC" requires explicit package name at outage_nodes.pl line 20. Global symbol "$MIN" requires explicit package name at outage_nodes.pl line 20. Global symbol "$HOUR" requires explicit package name at outage_nodes.pl line 20. Global symbol "$DAY" requires explicit package name at outage_nodes.pl line 20. Global symbol "$MON" requires explicit package name at outage_nodes.pl line 20. Global symbol "$YEAR" requires explicit package name at outage_nodes.pl line 20. Global symbol "$year" requires explicit package name at outage_nodes.pl line 22. Global symbol "$YEAR" requires explicit package name at outage_nodes.pl line 22. Global symbol "$month" requires explicit package name at outage_nodes.pl line 23. Global symbol "$MON" requires explicit package name at outage_nodes.pl line 23. Global symbol "$day" requires explicit package name at outage_nodes.pl line 24. Global symbol "$DAY" requires explicit package name at outage_nodes.pl line 24. Global symbol "$date" requires explicit package name at outage_nodes.pl line 25. Global symbol "$year" requires explicit package name at outage_nodes.pl line 25. Global symbol "$month" requires explicit package name at outage_nodes.pl line 25. Global symbol "$day" requires explicit package name at outage_nodes.pl line 25. Global symbol "$LOG" requires explicit package name at outage_nodes.pl line 27. Global symbol "$date" requires explicit package name at outage_nodes.pl line 27. Global symbol "@outagenodes" requires explicit package name at outage_nodes.pl line 37. Global symbol "@tempnodes" requires explicit package name at outage_nodes.pl line 44. Global symbol "@outagenodes" requires explicit package name at outage_nodes.pl line 48. Global symbol "$LOG" requires explicit package name at outage_nodes.pl line 59. Global symbol "$LOG" requires explicit package name at outage_nodes.pl line 59. Global symbol "$maintMode" requires explicit package name at outage_nodes.pl line 61. Global symbol "$HOUR" requires explicit package name at outage_nodes.pl line 61. Global symbol "$MIN" requires explicit package name at outage_nodes.pl line 61. Global symbol "$SEC" requires explicit package name at outage_nodes.pl line 61. Global symbol "$date" requires explicit package name at outage_nodes.pl line 63. Global symbol "$maintmode" requires explicit package name at outage_nodes.pl line 71. Global symbol "$NODES" requires explicit package name at outage_nodes.pl line 76. Global symbol "@tempnodes" requires explicit package name at outage_nodes.pl line 76. Global symbol "$NODES" requires explicit package name at outage_nodes.pl line 83. Global symbol "$cmd" requires explicit package name at outage_nodes.pl line 95. Global symbol "$NODES" requires explicit package name at outage_nodes.pl line 95. Global symbol "$cmd" requires explicit package name at outage_nodes.pl line 97. Global symbol "$cmd" requires explicit package name at outage_nodes.pl line 99. Global symbol "$NODES" requires explicit package name at outage_nodes.pl line 112. Global symbol "$cmd" requires explicit package name at outage_nodes.pl line 114. Global symbol "$NODES" requires explicit package name at outage_nodes.pl line 114. Global symbol "$cmd" requires explicit package name at outage_nodes.pl line 128. Global symbol "$cmd" requires explicit package name at outage_nodes.pl line 131. Execution of outage_nodes.pl aborted due to compilation errors.