-
Questionn script
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;
-
Kasanova, au bout de 10 posts, tu es censé savoir qu'un code doit être entouré des balises codes :tagcode: et qu'il est plus convenable d'envoyer une portion de code que l'on suspecte étant fausse.
@++
-
Bonjour,
la leçon sera retenue pour la prochaine fois. pourriez vous m'aider?[/code]
-
Les bonnes habitudes sont celles que l'on prend maintenant.
Merci d'avance.
@++
-
Le truc, c'est que ton code est plutot long, et non commenté (comme la plupart des codes...), il nous serait plus facile de n'en analyser qu'une portion plutot que l'intégrité.
Enfin, si quelqu'un à le courage de tout lire malgré l'absence d'indentation et la longueur...