Bonjour,
j'essaye depuis quelques temps de lancer un script via cron sur mandrake 7.2.
j'ai mis mon script perl dans /etc/cron.daily et la commande se lance tous
les jours mais alors que le script fonctionne correctement lorsqu'il est lance
en shell : . backuplog.pl, le cron me renvoie un message d'erreur :
variable date non initialisee.
apparemment le cron ne sait pas lancer la commande 'date' ?
qqun pourrait peut etre m'aider ?
christophe bruyere
voici mon script :
#!/usr/bin/perl -w
use strict;
use diagnostics;
# Mise en forme de la date
my $Date;
my @Date = split(/\./,`/bin/date --date '1 days ago' +%x.%a`); <= LIGNE QUI POSE PROBLEME
if ($Date[3] =~ /dim/)
{
@Date = split(/\./,`/bin/date --date '3 days ago' +%x.%a`);
}
if ($Date[0] =~ /^0/)
{
$Date[0] =~ tr /0//d;
}
if ($Date[1] =~ /^0/)
{
$Date[1] =~ tr /0//d;
}
chomp(@Date);
my $FullDate = "$Date[0]_$Date[1]_$Date[2]";
# Initialisation et declaration des variables
my $RepLog = "/studiel/backuplog"; # Repertoire des fichiers LOG
my $RepResult = "/mnt/public/informatique/rapports_sauvegarde";# Repertoire des fichiers rapport
my $DatName = "006"; # Nom du DAT
my $LogFile = "${DatName}Q$Date[2]_$Date[1]_$Date[0].log\n\n"; # Nom du fichier LOG
my $RepTmp = "/tmp"; # Repertoire temporaire
my $Compteur = 0; # Compteur de boucle
my @Extension = ("dra",
"psm",
"osm",
"bsm",
"ssm",
"pad",
"brd",
"csa",
"prt",
"css",
"ptf"); # Extensions des fichiers a compter
my %Nbre = (); # Tableau des compteurs de fichiers
my $Ext; # Nom de l'extension en cours
my $NombreEmpPhys; # Nombre d'empreintes physiques
# Boucle de calcul du nombre de fichiers extension par extension
print "Utilisation de $RepLog/$LogFile";
foreach $Ext (<@Extension>)
{
open (LOG, "$RepLog/$LogFile") || die "Impossible d ouvrir $RepLog/$LogFile";
print "Recherche de $Ext\n";
while (<LOG>)
{
tr / //s;
if (/\.$Ext /)
{
$Compteur = $Compteur + 1;
$Nbre{$Ext} = $Compteur;
} # fin if
} # fin while
close(LOG);
$Compteur = 0;
}
# Creation d'un fichier de rapport
open (RAPPORT, ">$RepResult/rapport_${FullDate}_dat${DatName}.txt") || die "Impossible d'ecrire $RepResult/rapport_$FullDate.txt : $!";
print RAPPORT "\t----------------------------------------------------------------\n";
print RAPPORT "\t- RAPPORT DE SAUVEGARDE DU $FullDate DAT $DatName -\n";
print RAPPORT "\t----------------------------------------------------------------\n\n";
foreach $Ext (<@Extension>)
{
printf RAPPORT "\tIl y a eu %8s fichiers .$Ext sauvegardes\n",$Nbre{$Ext};
}
$NombreEmpPhys = $Nbre{osm} + $Nbre{psm} + $Nbre{bsm} + $Nbre{ssm};
print RAPPORT "\n"; # separateur
print RAPPORT "\tNombre d'empreintes physiques sources (.dra) : $Nbre{dra}\n";
print RAPPORT "\tNombre d'empreintes physiques crees (.psm .osm...) : $NombreEmpPhys\n";
close(RAPPORT);
================================================================================================
