Script Perl - Informations
Résolu
dimitri
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Script vidéo youtube - Guide
- Entrer les informations d'identification reseau - Guide
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
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
}