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

Programmation et administration système Perl Discussion :

IF avec 3 condtions


Sujet :

Programmation et administration système Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut IF avec 3 condtions
    Bonjour à tous,

    Pour le besoin de mon script j'aimerai faire un if avec 3 conditions mais je bloque un peu là Mon if ne passe pas je passe directement vers mon else !

    Merci d'avance pour votre aide!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #!/usr/bin/perl
    use Net::Telnet;
     
    unless (open ($file, "switch.txt")) { die ("cannot open file Switch.txt\n"); } #fichier qui contient les adresses et noms des switchs
    unless (open ($logfile, ">>syslog.txt")) { die ("cannot open file Log.txt\n"); } #fichier qui contient les sessions telnet échouées
    
    while ($line = <$file>)
    {
        ($HOST,  $NAME, $CODE, $RADIUS) = split(/;/, $line);
     
            if ($TELNET->open($HOST) && $CODE eq 'switch' &&  $RADIUS eq 'yes' )
                {
                .
                .
                .
                .
                 .
     
                }
     
            else       
                {
                .
                .
                }
     
    }
     close ($file); 
    <>; #Garde la fenêtre ouverte après la fin de l'exécution du script

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    hum de nombreuses petites erreurs...

    Commence tes scripts par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/perl
    use strict;
    use warnings;
    cela devrait te signaler qqes erreurs déjà

    ensuite, quand crées ton objet TELNET ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    hum de nombreuses petites erreurs...

    Commence tes scripts par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/perl
    use strict;
    use warnings;
    cela devrait te signaler qqes erreurs déjà

    ensuite, quand crées ton objet TELNET ?
    Merci pour ta réponse,

    j'ajouterai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/usr/bin/perl
    use strict;
    use warnings;
    dans mon script

    Le Telnet passe bien, si je mets if ($TELNET->open($HOST) ,
    Voici mon programme au complet:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #!/usr/bin/perl
     
    use Net::Telnet;
     
    ########### DATE & TIME##############################################################################################
    ($sec,$min,$heure,$jour,$mois,$annee)= localtime time;
    $annee+=1900;
    $mois+=1;
    ###########OPENING FILE#############################################################################################
    unless (open ($file, "switch.txt")) { die ("cannot open file Switch.txt\n"); } #fichier qui contient les adresses et noms des switchs
    unless (open ($logfile, ">>syslog.txt")) { die ("cannot open file Log.txt\n"); } #fichier qui contient les sessions telnet échouées
    #############Variables################################################################################################
    $PROMPT='/.*[\$#:>\]\%] *$/';  #prend en compte n'importe caractéres du promp
    $TFTPSERVER='10.1.1.1.';
    $TELNET = new Net::Telnet (Timeout => 20, Errmode=>'return');
    $YES='yes';
    print("
    #####################################################################
    #####                   TFTP Bacbup is Started                 ######
    #####               Please don't close the window              ######
    #####################################################################\n");
    print $logfile("\n--------------------------------------- $jour/$mois/$annee $heure:$min:$sec ---------------------------------------\n");
    while ($line = <$file>)
    {
        ($HOST,  $NAME, $PASSSWITCH, $RADIUS) = split(/,/, $line);
     
            if ($TELNET->open($HOST) && $PASSSWITCH eq "switch" && $RADIUS eq "yes")
                {
                sleep 1;
                $TELNET->waitfor("Enter Ctrl-Y to begin.");
                $TELNET->put("\031") or die "=> cannot send Ctrl+Y \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->print("********");
                sleep 1;
                $TELNET->print("*******");
                sleep 5;
                $TELNET->waitfor("IP Configuration/Setup...");
                $TELNET->print("c") or die "=> cannot send C \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->waitfor("$PROMPT");
                $TELNET->print("enable") or die "=> cannot send enable \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->waitfor("$PROMPT");
                $TELNET->print("copy running-config tftp filename $NAME.ac address $TFTPSERVER") or die "=> Echec de l'envoi copy running-config \n=> ".$TELNET->errmsg."";
                sleep 1;
                $TELNET->close;
                }
            else       
                {
                print $logfile ("cannot to make the backup for: $HOST $NAME at $jour/$mois/$annee $heure:$min:$sec\n");
                }
    }
    close ($file); 
    close ($logfile);
    print("
    ######################################################################
    #####                   TFTP Bacbup is Completed                 #####
    #####                 Please press any key to quit               #####
    ######################################################################");
    <>; #Garde la fenêtre ouverte après la fin de l'exécution du script

  4. #4
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    ($HOST, $NAME, $PASSSWITCH, $RADIUS) = split(/,/, $line);

    if ($TELNET->open($HOST) && $PASSWITCH eq "switch"
    erreur de frappe ?

    ce type d'erreur est signalé quand tu utilises strict et warnings

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2012
    Messages : 41
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    erreur de frappe ?
    Oui erreur de frappe ;-)

    depuis que j'ai mis use warning;

    j'ai ce message qui apparait:

    Name "main:ASSSWITCH" used only once: possible typo at C:\Perl\Scriptperl\TFTP
    .pl line 25.
    Name "main::YES" used only once: possible typo at C:\Perl\Scriptperl\TFTP.pl lin
    e 16.

  6. #6
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    $radius est-il à la fin de la ligne ?
    si oui as-tu pensé à éliminer les caractères de fin de ligne ?

Discussions similaires

  1. Condtions sur jointures avec doctrine
    Par zakuza dans le forum Doctrine2
    Réponses: 3
    Dernier message: 14/07/2014, 12h32
  2. Réponses: 1
    Dernier message: 23/04/2012, 11h57
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    Réponses: 2
    Dernier message: 23/03/2002, 11h51
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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