diff --git a/tbsetup/node_reboot.in b/tbsetup/node_reboot.in index 9297ed35bb19c0866341fed4d9d937c96ea63068..4d878e5aaf7764b2a175d653cd1b278b2595dea6 100644 --- a/tbsetup/node_reboot.in +++ b/tbsetup/node_reboot.in @@ -36,7 +36,7 @@ use libtestbed; use event; my $ssh = "$TB/bin/sshtb -n"; -my $power = "$TB/bin/power"; +my $power = "$TB/bin/power -e"; my $ipod = "$TB/sbin/ipod"; my $ping = "/sbin/ping"; my %pids = (); diff --git a/tbsetup/power.in b/tbsetup/power.in index c6d3c51134169db1823b717d80cc367f34072680..0a928a6cf89b19af11fa2ed795a8bb545019f47d 100755 --- a/tbsetup/power.in +++ b/tbsetup/power.in @@ -6,16 +6,6 @@ # ############################################################ -# useful values are 0, 1, 2 and 3 -my $verbose = 0; -#If there is -d or -v, turn it on right now... -if ( join(" ",@ARGV) =~ /^-[d|v](\s*)(\d*)\s[oc]/ ) { - shift; - if (defined $1 && $1 ne "") { shift; } - if (defined $2 && $2 ne "") { $verbose = $2; } else { $verbose = 1; } -} -print "VERBOSE ON: Set to level $verbose\n" if $verbose; - # # Configure variables # @@ -27,6 +17,16 @@ use event; use libtestbed; use strict; use English; +use Getopt::Std; + +sub usage() { + print << "END"; +Usage: $0 [-v n] [-e] +-e Surpress sending of event - for use by scripts that have already sent it +-v n Run with verbosity level n +END + 1; +} # # Un-taint path since this gets called from setuid scripts. @@ -42,11 +42,35 @@ my %IPList = (); #holds machine/ip pairs my %OutletList = (); #holds machine/outlet pairs my $exitval = 0; +# +# Process command-line arguments +# +my %opt = (); +getopts("v:he",\%opt); + +if ($opt{h}) { + exit &usage; +} + +# useful values are 0, 1, 2 and 3 +my $verbose = 0; +if ($opt{v}) { + $verbose = $opt{v}; +} +print "VERBOSE ON: Set to level $verbose\n" if $verbose; + +my $sendevent = 1; +if ($opt{e}) { + $sendevent = 0; +} + # # Must have at least an op and a machine, so at least 2 ARGV # -die("Usage:\npower [-v[n]] [on|off|cycle] [] ...\n", - "n = verbosity level (0-3)\n") if ( @ARGV < 2 ); +if (@ARGV < 2) { + exit &usage; +} + # # Read in ARGV @@ -55,7 +79,7 @@ $op = shift (@ARGV); if ($op =~ /^(on|off|cycle)$/) { $op = $1; } else { - die("Invalid command '$op'\n"); + exit &usage; } # @@ -204,10 +228,12 @@ foreach my $power_id (keys %outlets) { if (!$errors) { foreach my $node (@nodes) { print "$node now ",($op eq "cycle" ? "rebooting" : $op),"\n"; - EventSendFatal(objtype => "TBNODESTATE", - objname => $node, - eventtype => "REBOOTING", - host => TB_BOSSNODE); + if ($sendevent) { + EventSendFatal(objtype => "TBNODESTATE", + objname => $node, + eventtype => "REBOOTING", + host => TB_BOSSNODE); + } } } else { $exitval += $errors;