Bonjour à tous,
Quelqu'un aurait il l'amabilité de m'aider à commencer le programme suivant s'il vous plaît ?
Le problème étant que j'ai vraiment du mal à comprendre la syntaxe du perl.
Je connais l'utilité du programme : Il permet de lire dans un fichier log (syslog) les données sur chaque ligne et de check les access-list . Je lance mon fichier : fichier.pl > accesslist.xls et je redirige les données vers un fichier excel.
Ce qui est déjà commenté, c'est ce qui est intuitif, les autres lignes je ne comprends, j'ai vraiment besoin d'aide s'il vous plaît ...
#
$acl_name="MK1";
# Nom du fichier Syslog à examiner
$stuff="fichierSyslog.txt";
#
# Seuil : nombre de paquets minimum pour ajouter la conversation dans le rapport
$seuil=0;
$nc=0;
$conversation="";
open stuff, $stuff;
while (<stuff>) {
# On filtre le fichier d'entrée en ne traitant que les lignes comprenant la chaine de caractères entre // ci-dessous
if (/list 124/) {
s/^.*permitted//;
# print "\nLigne1 $_";
# good s/\([0-9\/]*\)//g;
# s/(\([0-9\/]*\))(.*?)(\([0-9\/]*\))/ PS\1 \2 PR\3/g;
s/ ->//g;
# print "\nLigne2 $_";
s/,//g;
s/\(0\/0\)//g;
# print "\nLigne3 $_";
s/([a-z]+).*?([\.\(\)0-9]+).*?([\.\(\)0-9]+).*?([0-9]+)/\1 \2 \3 \4/;
# print "\nLigne4 $_";
# s/(10\.22\.207)/toto/;
$conversation="$1 $2 $3";
$packet=$4;
# print "Conversation : |$conversation| $packet paquets\n";
$exist=0;
$I=0;
foreach $conv (@conv_tab) {
# print "Conv : $conv \n";
if ($conv eq $conversation) {
# print "Conv existante ($conv , $conversation )\n";
$exist=1;
$pkt_tab[$I]+=$packet;
# print " $pkt_tab[$I] \n";
last;
}
$I++;
}
if (!$exist) {
# print "Conv non existante\n";
push(@conv_tab,$conversation);
push(@pkt_tab,$packet);
# print @conv_tab;
# print "\n";
}
}
}
print "Tableau conversations \n";
$I=0;
foreach (@conv_tab) {
if ($pkt_tab[$I] > $seuil) {
print "$pkt_tab[$I] $conv_tab[$I]\n";
}
$I++;
}
pouvez vous m'aider s'il vous plait à commenter ce petit bout de code,
amicalement,
dimitri
