System information
sub runPing{
my $node = shift;
my $retries = 3;
my $sleep = 15;
my $i;
if ($debug) { print returnTime." Starting Pinging with $retries retries.\n"; }
$pingresult = 0;
# do a ping $retries times.
for ($i=1;$i<=$retries;++$i) {
$pingresult = ping(node => $node, timeout => 5, debug => $debug );
if ( $pingresult != 100 ) {
# Sleep a bit and try a second time.
if ($debug>1) { print "Sleeping $sleep seconds\n"; }
sleep $sleep;
} else {
$i = $retries;
}
}
if ( $pingresult != 100 ) {
# Device is down
$pingresult=0;
if ($debug) { print returnTime." Pinging Failed $node $NMIS::systemTable{roleType} $NMIS::systemTable{nodeType}\n"; }
notify(node => $node, role => $NMIS::systemTable{roleType}, type => $NMIS::systemTable{nodeType}, event => "Node Down");
# Device is down only update the runReachability if its an interface.
if ( $type eq "interface" ) { &runReachability; }
} else {
# Device is UP!
checkEvent(node => $node, role => $NMIS::systemTable{roleType}, type => $NMIS::systemTable{nodeType}, event => "Node Down");
}
}
DONE
ping.pm
my $r;
my $num_tries = 5;
$ping = Net::Ping->new("icmp", $timeout, $packetsize);
while ($r<=$num_tries and $result != 100;) {
if ( $debug eq "verbose" ) { print returnTime."
Pinging $node timeout $timeout\n"; }
if ( $ping->ping($node, $timeout) ) { $result = 100; }
else { $result = 0; }
++$r
}
$ping->close;
DONE
NMIS - Network Management Information System http://www.sins.com.au/nmis/
35 of 43 15/04/2002 3:59 PM