IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Questionn script


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Par défaut 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;

  2. #2
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 893
    Par défaut
    Kasanova, au bout de 10 posts, tu es censé savoir qu'un code doit être entouré des balises codes et qu'il est plus convenable d'envoyer une portion de code que l'on suspecte étant fausse.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Par défaut
    Bonjour,

    la leçon sera retenue pour la prochaine fois. pourriez vous m'aider?[/code]

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 893
    Par défaut
    Les bonnes habitudes sont celles que l'on prend maintenant.
    Merci d'avance.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  5. #5
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    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...

Discussions similaires

  1. Quel est le meilleur script PHP de portail (CMS) ?
    Par Lana.Bauer dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 187
    Dernier message: 18/10/2012, 07h45
  2. Script et XMLmodule
    Par Ph. B. dans le forum XMLRAD
    Réponses: 4
    Dernier message: 27/01/2003, 16h10
  3. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42
  4. Réponses: 2
    Dernier message: 11/07/2002, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo