#!/usr/bin/perl
# Filename: wanmon.pl, Date: 17/12/2001
#
# Author: Frank Diercks, VRZ Koblenz,
[email protected]
#
# Dieses Skript überprueft anhand des Perlmoduls Ping die Verbindungen zu den im Array
# host aufgeführten Gegenstellen.
#
use Net::Ping;
@host=("192.168.1.1", "192.168.1.2");
$logfile="//var//log//wanmon.log";
$host_count=scalar(@host) - 1;
for ($x=0; $x <= $host_count; $x++)
{
$time_out_flag[$x]=0;
# print $time_out_flag[$x];
}
while (1)
{
$p = Net::Ping->new("icmp");
for ($x=0; $x <= $host_count; $x++)
{
# print $host[$x], " ", $time_out_flag[$x], "\n";
if ($p->ping($host[$x], 3) == 0)
{
if ($p->ping($host[$x], 3) == 0)
{
if ($time_out_flag[$x] == 0)
{
open (LF, ">>$logfile") || die "Cannot open $logfile for write :$!";
print LF scalar(localtime), " ", $host[$x], " timed out.\n";
close LF;
system 'echo '.$host[$x].' timed out ! | smbclient -M admin1 > /dev/null';
};
$time_out_flag[$x] = 1;
};
};
# Default timeout to wait for a reply is 3 seconds
if ($p->ping($host[$x], 3) == 1)
{
if ($time_out_flag[$x] == 1)
{
open (LF, ">>$logfile") or die "Cannot open $logfile for write :$!";
print LF scalar(localtime), " ", $host[$x], " online again.\n";
close LF;
system 'echo '.$host[$x].' online again. | smbclient -M admin1 > /dev/null';
}
$time_out_flag[$x] = 0;
};
};
$p->close();
sleep 900;
};
exit;