Script Perl - Informations
Résolu
dimitri
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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
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
A voir également:
- Script Perl - Informations
- Script vidéo youtube - Guide
- Entrer les informations d'identification reseau - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
23 réponses
Re,
# à ne pas oublié qu'on est toujours dans la boucle while # pour chaque élément du tableau @conv_tab foreach $conv (@conv_tab) { # print "Conv : $conv \n"; if ($conv eq $conversation) { # si la variable $conv est égale avec $conversation # print "Conv existante ($conv , $conversation )\n"; $exist=1; # initialise la variable $exist $pkt_tab[$I]+=$packet; # équivalent avec $pkt_tab[$I] = $pkt_tab[$I] + $packet # donc tu remplis le tableau @pkt_tab # print " $pkt_tab[$I] \n"; last; # sortir de la boucle } $I++; # $I est incrementé } if (!$exist) { # on test la valeur de vérité de $existe # ! c'est pour négation # print "Conv non existante\n"; push(@conv_tab,$conversation); # on ajoute à @conf la variable $conversation push(@pkt_tab,$packet); # on ajoute à @pkt_tab,$packet # print @conv_tab; # print "\n"; } } } print "Tableau conversations \n"; $I=0; foreach (@conv_tab) { # pour chaque élément de tableau @conv_tab if ($pkt_tab[$I] > $seuil) { # on teste les éléments de @pkt_tab avec $seuil print "$pkt_tab[$I] $conv_tab[$I]\n"; # on affiche les éléments de @pkt_tab et @conv_tab } $I++; # incrémentatoin de $I }