Bonjour,
Je cherchais un script de supervision pour les envoies CFT, et j'ai trouvé ce scrip, qui check les envoie, les répertorie, et envoie un email de rapport. Mais je ne connais pas perl et j'aimerai bien l'adapter et l'utiliser, pour ça j'ai créer un fichier bat pour le lancer mais cela ne marche pas. Qui peu m'aider et me dire ce qui ne vas pas dans le programme?
merci d'avance pour votre aide
_____________________
#!c:\\logiciel\\perl\\bin\\perl -w
use strict;
use Net::SMTP;
#Auteurs :
#Version 1.0 - 03 08 2004
#Entrees : $1=nom du fichier catalogue CFT
#$2=nom du fichier parametre
#$3=nom du fichier de log
#$4=nom du fichier destinataires
#Modif :
# <date> / <qui>
# <quoi>
# ----------------
# Traitement du catalogue CFT pour émission d'alertes sur les fichiers non reçus
my $fic_cft=(shift @ARGV);
my $fic_parm=(shift @ARGV);
my $fic_dest=(shift @ARGV);
my $dest=(shift @ARGV);
my $annee = (localtime)[5];
my $mois = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L')[(localtime)[4]];
my $jour =("00","01","02","03","04","05","06","07","08","09",10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)[(localtime)[3]];
my $heure = (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)[(localtime)[2]];
my $min = (0,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)[(localtime)[1]];
my $sjour=(0,1,2,3,4,5,6)[(localtime)[6]];
my $timestamp=$mois.$jour;
sub envoimail($parmidf,$parmheure,$idt,$diagi,$errno)
{
my ($parmidf,$parmheure,$idt,$diagi,$errno)=@_;
open FILE, "<$dest" or die "TOTO Probleme a l ouverture en ecriture $dest : $! \n";
my @lines = <FILE>; # Lit le fichier, et le met dans un tableau
close FILE;
my $liste='';
foreach my $line (@lines)
{
chop($line);
$liste=$liste.$line.','."\n";
}
my $smtp = Net::SMTP->new('wsmtp.toto.fr',
Hello => 'mc2.toto.fr',
Timeout => 60,
Debug => 0,);
$smtp->mail('baliste3');
$smtp->recipient($liste);
$smtp->data();
$smtp->datasend("To: ".$liste);
$smtp->datasend("Subject: Supervision CFT RELATION CLIENTS\n");
$smtp->datasend("\n");
if ($errno == 1) { $smtp->datasend("Erreur $errno sur l'idf $parmidf Echec transfert à ".substr($idt,3,2)." heures (Code diagnostique $diagi)\n"); }
elsif ($errno == 2) { $smtp->datasend("Erreur $errno sur l'idf ".$parmidf." à ".substr($idt,3,2)." heures (heure limite $parmheure heures dépassée)\n"); }
elsif ($errno == 3) { $smtp->datasend("Erreur $errno sur l'idf ".$parmidf." Pas de transfert aujourd'hui\n"); }
$smtp->dataend();
$smtp->quit;
}
open FCFT, "$fic_cft" or die "Probleme a l ouverture de $fic_cft : $! \n";
my @lcft = <FCFT>;
close FCFT;
open FPARM, "$fic_parm" or die "Probleme a l ouverture de $fic_parm : $! \n";
my @lparm = <FPARM>;
close FPARM;
open FDEST, ">$fic_dest" or die "Probleme a l ouverture de $fic_dest : $! \n";
shift(@lcft);shift(@lcft);shift(@lcft);shift(@lcft);shift(@lcft);shift(@lcft);shift(@lcft);
foreach my $parm (@lparm)
{
my @parmj;
my $parmidf="";
my $parmheure="";
($parmj[0],$parmj[1],$parmj[2],$parmj[3],$parmj[4],$parmj[5],$parmj[6],$parmidf,$parmheure)=split(/;/,$parm);
my $flag_ok=0;
foreach my $lcft (@lcft)
{
if ((length($lcft) > 8) && !(substr($lcft,0,3) eq "CFT") && !(substr($lcft,0,3) eq " ") )
{
my $part=substr($lcft,2,8);
my $sens=substr($lcft,11,3);
my $idf=substr($lcft,16,8);
my $idt=substr($lcft,25,8);
my $recs=substr($lcft,34,8);
my $rect=substr($lcft,43,8);
my $diagi=substr($lcft,52,3);
my $diagp=substr($lcft,56,8);
#print ("$timestamp ".substr($idt,0,3)." $idf $parmidf\n");
if ($idf eq $parmidf)
{
if ((substr($idt,0,3) eq $timestamp) & ($parmj[$sjour] == 1))
{
$flag_ok=1;
my $parmsens="Emission";
if (substr($sens,0,1) eq "R") {$parmsens="Reception";}
if (substr($idt,3,2) < $parmheure)
{
if ($diagi == 0)
{
print FDEST ("OK $parmsens $idf partenaire $part à ".substr($idt,3,2)." heures \n");
}
else
{
print ("KO IDF $idf partenaire $part Echec transfert à ".substr($idt,3,2)." heures (Code diagnostique $diagi) \n");
&envoimail($parmidf,$parmheure,$idt,$diagi,1);
print FDEST ("KO IDF $idf partenaire $part Echec transfert à ".substr($idt,3,2)." heures (Code diagnostique $diagi) \n");
}
}
else
{
if ($diagi == 0)
{
print ("KO $parmsens $idf partenaire $part à ".substr($idt,3,2)." heures (heure limite $parmheure heures dépassée) \n");
&envoimail($parmidf,$parmheure,$idt,$diagi,2);
print FDEST ("KO $parmsens $idf partenaire $part à ".substr($idt,3,2)." heures (heure limite $parmheure heures dépassée) \n");
}
else
{
print ("KO IDF $idf partenaire $part Echec transfert à ".substr($idt,3,2)." heures (Code diagnostique $diagi) \n");
&envoimail($parmidf,$parmheure,$idt,$diagi,1);
print FDEST ("KO IDF $idf partenaire $part Echec transfert à ".substr($idt,3,2)." heures (Code diagnostique $diagi) \n");
}
}
}
}
}
}
if ($flag_ok==0)
{
print ("KO IDF $parmidf Pas de transfert aujourd\'hui \n");
&envoimail($parmidf,$parmheure,'','',3);
print FDEST ("KO IDF $parmidf Pas de transfert aujourd\'hui \n");
}
}
close FDEST;
Partager