#!/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;