[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Outil le plus simple pour surveiller des liens ADSL



Le 20/05/2014 11:07, Olivier a écrit :
> Bonjour,
> 
> Je souhaite surveiller la disponibilité d'une quinzaine de liens
> ADSL.
> 
> Par "surveiller la disponibilité", j'entends: - faire un simple
> ping (ou équivalent) sur l'IP externe de chaque lien ADSL (chacun a
> une IP externe fixe) toutes les 5 mn, par exemple, - conserver la
> réponse dans une base de données idoine, - si le ping  échoue
> (critère à préciser) alors que le précédent avait réussi  m'alerter
> (par un canal à préciser parmi l'email, le SMS ou autre), - si le
> ping  réussi alors que le précédent avait échoué  m'alerter.
> 
> J'imaginai rédiger un script (en Python ou bash) qui
> lirait-écrirait dans une base RRD mais je suis ouvert à toute
> suggestion.
> 
> 
> Que conseillez-vous ?
> 
> Slts
> 

Chez moi une paire de scripts Perl qui fait une comparaison de
timestamp et un transfert de fichier témoin avec rsync, chaque script
lancé par une tâche cron. Si le lien tombe çà me passe un appel
téléphonique (un 3eme script). C'est du bidouillage maison mais je
n'avais besoin de rien de plus.

==============================================
Sur une machine derrière le lien à surveiller:
==============================================
Crontab:
*/2 * * * *	/home/XXX/bin/sendAliveMsg.pl

SCRIPT SendAliveMsg.pl:

#------------------------------------------------------------------------------
use 5.10.0;
use warnings;
use strict;
#------------------------------------------------------------------------------
my $fichier = $ENV{PWD}. '/temoin';
my $now = time();
say $now;
#------------------------------------------------------------------------------
open my $handle, '>', $fichier or die qq{Impossible d'ouvrir $fichier\n};
print $handle $now."\n";
close $handle;
#------------------------------------------------------------------------------
my $sshKey = $ENV{PWD}."/.ssh/id_rsaXXX";
my $sshPort = 22;
my $cible = 'machinedesurveillance.exemple.com';
my $rsyncCmd =
    "rsync -avP"
    ." -e 'ssh -i $sshKey -p $sshPort'"
    ." $fichier"
    ." $cible:";
say $rsyncCmd;
exec $rsyncCmd;
#------------------------------------------------------------------------------

===============================
Sur la machine de surveillance:
===============================
Crontab:
*/3 * * * * 	killall /home/XXX/bin/call.pl
*/3 * * * *     /usr/bin/perl -E 'system "/home/XXX/bin/call.pl
06xxxxxxxx" if `/home/XXX/bin/ageLastSignal.pl /home/XXX/temoin` > 190'

SCRIPT ageLastSignal.pl:

#!/usr/bin/perl
#------------------------------------------------------------------------------
use 5.10.0;
use warnings;
use strict;
#------------------------------------------------------------------------------
my $fichier = shift @ARGV;
my $now = time();
#------------------------------------------------------------------------------
my $timeTemoin;
open my $handle, '<', $fichier or die qq{Impossible d'ouvrir $fichier\n};
while (my $ligne = <$handle>) {
    #say "ligne: $ligne";
    chomp $ligne;
    $timeTemoin = $ligne;
}
close $handle;
#------------------------------------------------------------------------------
my $ecart = $now - $timeTemoin;
print $ecart; #;if $ecart > $delai;
#------------------------------------------------------------------------------


Reply to: