if (@ARGV<2 || @ARGV>3 || $ARGV[0] =~ m/^-/) { die "bad usage\n$usagemsg"; }
+our ($max_retries) = 16; # timeout = 0.05 * max_retries^2
our ($dnsname,$outlet,$action) = @ARGV;
my ($session,$error) = Net::SNMP->session(
} else {
my $valset = action_value();
print "was: "; show();
- set($valset);
- print "now: "; show();
- print "^ note, PDUs often do not update returned info immediately\n";
+
+ my $retries = 0;
+ for (;;) {
+ set($valset);
+ sleep $retries * 0.1;
+ print "now: "; my $got = show();
+ if ($got eq $map[$valset]) { last; }
+ if ($map[$valset] !~ m{^(?:off|on)$}) {
+ print
+ "^ note, PDUs often do not update returned info immediately\n";
+ last;
+ }
+ if ($retries >= $max_retries) {
+ die "PDU does not seem to be changing state!\n";
+ }
+ $retries++;
+ }
}