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 49 50
| #!/usr/bin/perl
use warnings;
use strict;
my $file = "\\\\SERVER1\\LOGS\\logic.log";
my $date_today = date()->{date};
my $date_fichier = date( (stat($file) )[9] )->{date};
# test si fichier est du jour (si oui traitement de parse)
if ( $date_fichier eq $date_today ) {
my $commandes = 'logparser.exe -i:TEXTLINE -o:TSV -stats:OFF'
. ' "'
. ' select EXTRACT_FILENAME(LogFileName) as FichierLog, text as resultat from'
. " '\\\\SERVER1\\LOGS\\logic.log',"
. " '\\\\SERVER1\\LOGS\\logic2.log'"
. " where text like '\%\%_ERREUR\%\%'"
. ' ">toto.txt' #redirection vers un fichier (l'idéal serait d'intégrer le split sans rediriger vers un fichier
;
#ouverture du fichier pour récupérer le 6ème et 7ème élément de chaque ligne - séparateur espace. ça fonctionne pas !!
foreach my $Ligne ( `$commandes` ) {
my @Liste = split(/\t/, $Ligne);
print "$Ligne\n" ;
}
}
sub date {
my $time = shift || time; #$time par defaut vaut le time actuel
my ( $seconde, $minute, $heure, $jour, $mois, $annee, $jour_semaine, $jour_annee, $heure_hiver_ou_ete )
= localtime($time);
$mois += 1;
$annee += 1900;
# On rajoute 0 si le chiffre est compris entre 1 et 9
foreach ( $seconde, $minute, $heure, $jour, $mois, $annee ) {
s/^(\d)$/0$1/;
}
my %date = (
"date" => "$jour-$mois-$annee",
"heure" => "$heure:$minute:$seconde",
"jour_semaine" => $jour_semaine,
"jour_annee" => $jour_annee,
"hiverOuEte" => $heure_hiver_ou_ete,
);
return \%date;
} |