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
|
#!C:\Dwimperl\perl\bin
use strict;
use warnings;
#Première partie de script je récupère les adresses IP de mon fichier, je les ping une à une et je renseigne la sortie de la commande dans un nouveaux fichier txt
#Je déclare mes variables // NB: une seule variable a besoin d'être déclarée ici
my @t;
# J'ouvre le fichier contenant la liste des adresses IP et j'affecte celle-ci dans mon tableau @t
open my $file_ip, '<', "C:\\Perl\\ip.txt" or die "Impossible d'ouvrir le fichier ip.txt $!";
# indiquer le nom du fichier qu'on ne peut ouvrir peut aider s'il y a beaucoup d'ouvertures de fichiers, on sait laquelle plante le cas échéant
while (my $line_ip = <$file_ip> )
{
push @t, $line_ip; #je récupère les données das mon tableau en indiquant qu'elles sont séparées par un saut de ligne // fin du commentaire faux
}
#Pour chaque valeur contenue dans mon tableau @t j'exécute un ping suivi de cette valeur et je renvois le STDOUT dans un fichier result_ping.txt
open my $file_result, '>>', "C:\\Perl\\result_ping.txt" or die "Impossible d'ouvrir le fichier result_ping.txt $!";
foreach my $v (@t)
{
my $command= `ping $v`; # NB: nom de variable mal choisi, il s'agit plutôt du résultat de la commande
print $file_result "$command\n";
}
close $file_result;
close $file_ip;
#Deuxième partie de script je parse le fichier result_ping.txt et recherche les pings non aboutis
#J'ouvre mon fichier de résultat de ping
open my $file_result, '<', "C:\\Perl\\result_ping.txt" or die "Impossible d'ouvrir le fichier result_ping.txt $!";
#Pour chaque ligne du fichier je teste si la igne est différence de "Réponse de @IP : octets=" ou " Envoi d'une"
open my $file_log, '>>', "C:\\Perl\\result_log.txt" or die "Impossible d'ouvrir le fichier result_log.txt $!";
while (my $line_result = <$file_result>)
{
if ($line_result!~/Réponse de [0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3}\.[0-9]{1-3} : octets=PIPE^Envoi dune/)
# la regex de l'IP pourrait s'écrire: (?:[0-9]{1-3}\.){3}[0-9]{1-3}
{
#Si on test est vrai alors j'ouvre un nouveau fichier en écriture et j'écris la ligne dedans // début du commentaire faux
print ({$file_log} "$line_result\n" );
}
}
close $file_log;
close $file_result; |
Partager