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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
| ##### Recupere le log des sauvegardes des postes validés
#!/usr/bin/perl
use Time::Local;
#use Mail::Sender;
use File::Copy;
use strict;
system ( "net use Z: /DELETE" );
system ( "net use Z: \\\\serveur\\partage" ); # partage où sont les log des differents postes à analyser
my $repm="z:\\";
my $Liste_postes="c:\\scripts\\exploit\\bpx\\postes-bpx-test.txt"; #Dans ce fichier figure les jours du controle des sauvegardes
my ($Week_Day,$datejour,$dateveille)=caldate();
my $wd=$Week_Day;
my $dj=$datejour;
my $dv=$dateveille;
my $fic=$Liste_postes;
open( FIC, 'postes-bpx-test.txt') or die "pas open\n"; # ouvre le fichier de la liste des postes sauvegardés
while (<FIC>){
if ( $_ =~ /^\s*(\d+);([^;]+);(\d+);([^;]+)/ ){
my $numjour = $1;
my $nomrep = $2;
my $heuresav = $3;
my $chSuiv = $4;
my $nomlog;
if ( $numjour == $wd ){
if ( $heuresav > 8 ){
$nomlog = "\\log $dv.txt";
print "$nomlog \n";
#controlelog($nomrep,$nomlog,$chSuiv);
}
else{
$nomlog = "\\log $dj.txt";
print "$nomlog \n";
#ontrolelog($nomrep,$nomlog,,$chSuiv);
}
}
}
}
# Calcul sur le date ##########################################################
################################################################################
sub caldate
{
# Calcul de la date du jour AAAAMMJJ
#@jour = ('0', '1', '2', '3', '4', '5', '6');
my @jour = ('Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam');
my ($Sec,$Min,$Hour,$Day,$Month,$Year,$Week_Day) = localtime(time);
$Year += 1900;
$Month++;
if ($Day < 10)
{
$Day= "0$Day";
}
my $datejour = $Year.$Month.$Day ;
# Calcul de la date de la veille AAAAMMJJ
my ($sec, $min, $heure,$jour, $mois,$annee) = localtime(time-3600*24);
$annee += 1900;
$mois++;
if ($jour < 10)
{
$jour= "0$jour";
}
my $dateveille = $annee.$mois.$jour ;
return ($Week_Day,$datejour,$dateveille) # retourne le N° du jour la date du jour et la date de la veille
}
# Controle le presence du fichier Log ######################################################
###############################################################################
sub controlelog
{
my $etat=0;
my $nb=0;
my $replog = $_[0];
my $ficlog = $_[1];
my $dest = $_[2];
my $log="$repm\\$replog\\Logs$ficlog";
my $log1="$repm\\$replog\\Logs$ficlog";
my $decode="$repm\\$replog\\Logs\\decode.txt";
print "$repm\\$replog\\Logs$ficlog \n";
if ( -e "$log" ) # Teste si le fichier devant etre analyse est present
{
$log1 =~ s/\s+//g; # Supprime le blanc dans le nom du log
copy("$log","$log1"); # Copie le fichier source dans le fichier sans espace dans le nom
system ( "type $log1 > $decode" ); # Le converti en ansi
unlink $log1;
analyselog($decode,$dest,$replog);
}
else
{
system ( "net use Z: /DELETE" );
print "$repm\\$replog\\Logs$ficlog introuvable\n";
my $msg = "Bonjour,
Les sauvegardes sur le poste $replog ne se sont pas exécutées.
Fichier LOG non trouvé.
Veuillez vérifier que le poste est allumé.
Bonne journée";
#courriel($dest,$msg);
}
}
#Analyse du fichier Log ######################################################
###############################################################################
sub analyselog
{
my $log=$_[0];
my $dest=$_[1];
my $poste=$_[2];
open( LOG, "$log" );
print $log ;
my $mess="Voici les lignes en erreur dans la sauvegarde du poste $poste \n\n";
while ( <LOG> ){
if ($_ =~ /^\s*ERR/ ){ # recherche ligne commençant par ERR avec éventuellement 1 ou plusieurs espace(s) avant
$mess .= "$_" ;
}
}
close LOG;
unlink $log;
system ( "net use Z: /DELETE" );
#courriel($dest,$mess);
} |
Partager