dim 2 juil 2006
Parser un fichier en Perl
02 07 2006Je suis allé faire un tour chez un ami hier afin de lui donner un coup de main. Il souhaitait parser un fichier de log en Perl généré par le firewall de son serveur linux.
Je n'avais jamais testé les scripts Cgi et c'est assez pratique.
Voilà ce qu'il en est ressortit :
On définit l'interpréteur :
#!/usr/bin/perl
Cette ligne pourra permettre de voir ses erreurs éventuelles :
use CGI::Carp qw(fatalsToBrowser);
On définit un header afin de pouvoir afficher dans le navigateur :
print "Content-type: text/html\n\n";
Là commence le script de parsage du code ; on ouvre ("<" montre que le fichier est ouvrt en lecture ; ">" sera pour l'écriture) le fichier à parser :
open FICHIER,"< shorewall.log" or die "Le fichier n'existe pas !";
On parcourt le fichier ligne par ligne :
while ($ligne = <FICHIER>) {
On récupère chaque partie de l'expression régulières de cette manière :
//On applique un masque sur chaque ligne grâce à une expressions régulières qui vous sera propre : if($ligne =~ (/[a-z]{3}\s*\d{0,2}\s*\d{0,2}:\d{0,2}:\d{0,2}).*Shorewall:([a-z1-9]*):([a-z]*):\s*.../i) { my $date = $1; my $rule = $2; my ...
Puis l'on ferme le tout :
} } close FICHIER;
c'était ma petite initiation personnelle et je compte transcrire pour bientôt les résultats du parsage dans une base sqlite.
Waouh quelle consideration