1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#!/opt/perl5/bin/perl -w
use strict;
## Vérification de l'existence et du type du paramètre passé au script
$ARGV=@ARGV;
if ($ARGV == 0) {print("\n\nPas de parametre en entree du script.\n\n",
"Veuillez lancer le script de cette facon:\n",
" sous windows: perl -w script fichier_input\n",
" sous unix: ./script fichier_input\n\n");
exit;}
if (not -f $ARGV[0]) {print("\n\nLe fichier passe en parametre n'existe pas.\n\n",
"Veuillez verifier que le nom du fichier est exact et ",
"qu'il se trouve dans le meme repertoire que le script\n\n");
exit;}
#### Définitions des variables utilisées
my $output_file = "ping_it_res.txt";
my $ip;
#### Ouverture du fichier de résultat
open(RESULTAT,">$output_file") or die "Impossible de créer le fichier resultat: $!\n";
## recuperation date & heure
my ($sec,$min,$hour,$mday,$mon,$year) = (localtime(time))[0..6];
$mon=$mon+1; $year=$year+1900;
foreach ($mon,$mday,$hour,$min,$sec) { $_ ='0'.$_ if ($_ < 10) }
print RESULTAT "Resultat des requêtes ping\n",
"Test effectué le $mday/$mon/$year à $hour:$min:$sec\n\n";
#### Récupération des données dans le fichier de conf
open(LOAD_CONF,"$ARGV[0]") or die "\nProblème lors de l'ouverture du fichier de conf $ARGV[0]: $!\n\n";
while (<LOAD_CONF>) {
if ( $_ !~ m/(^#|^$)/ ) {
chomp; # Supprime les retours chariot
if ( /\s$/ ) { chop; } # Supprime le dernier espace de la ligne si present
$ip = $_;
## vérification de la syntaxe du fichier de configuration
if ( $ip !~ m/^ (RM|LB|CM|SD|AP|HB|SD|SF|WL|ST|SW|SR|RT|RS)|(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$)/i ) { die "\nErreur de syntaxe: $ARGV[0] line : $.\n"; }
my $nombre=`ping $ip -n 2 | grep -c "icmp"`;
if ( $nombre == 0 ) { print "Le ping vers $ip N'A PAS ABOUTI\n";
print RESULTAT "KO: $ip\n"; }
elsif ( $nombre == 2 ) { print "Le ping vers $ip a abouti\n";
print RESULTAT "ok: $ip\n"; }
else { print "Problème lors du ping vers $ip\n";
print RESULTAT "erreur: $ip - seul $nombre ping sur 2 a abouti\n"; }
} # End if ^#
} # End While
close(LOAD_CONF);
close(RESULTAT); |
Partager