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 :

IF ELSE


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut IF ELSE
    Bonjour,

    J'ai un énorme problème avec le IF puis après le ELSE...
    Dans mon code il passe tout le temps dans le else alors que la condition devrait le faire passer dans le IF...

    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
     
     
        while ( $x < @adIP )  # @adIP contient X.X.X.X X.X.X.X
        {
            $new_ip = $adIP[$x]; #$adIP contient X.X.X.X
            print ("$new_ip\n");
     
            while ( $z < @switchs_database ) #@switchs_database contient 4 lignes avec nom, IP, login, mdp
            {
                if ( $new_ip eq $switchs_database[$z][1] ) #je compare X.X.X.X d'audessus avec le contenue de la colone 1 du tableau
                {
                    $switch_name = $switchs_database[$z]->[0];
                    $switch_ip  = $switchs_database[$z]->[1];
                    $user_login = $switchs_database[$z]->[2];
                    $user_password = $switchs_database[$z]->[3];
     
                    print ("RECHERCHE SUR LE SWITCH : $switch_name \t $switch_ip\n");
                    ($telnet_session) = &connexion($switch_name,$switch_ip,$user_login,$user_password);
                    ($port_found, @find_tab) = &search($switch_name,$switch_ip,$user_login,$user_password,$telnet_session);
                    &print_result($switch_name,$switch_ip,$user_login,$user_password,$port_found,$telnet_session);
                    &deconnexion($telnet_session, $switch_name, $switch_ip);
                }
                else
                {
                    &print_error("L'IP: $new_ip, n'est pas un switch\n");  # si l'ip existe pas dans le tableau switchs_database alors msg d'erreur!!!
                }
                $z++;
            }
            $x++;
        }
    avez vous une idée du problème???

    je vois pas du tout pour ma part, pourtant j'ai cherché!!!!
    SVP!!

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Bonjour,

    si tu glisses ceci juste avant ton if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print "var1 = \'$new_ip\' , var2 = \'$switchs_database[$z][1]\'";
    Qu'est-ce que ça donne ?

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Entre tes x.x.x.x.x.x.x.x et tes x.x.x.x ... ce n'est pas facile de comprendre le contenu de tes variables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $new_ip eq $switchs_database[$z][1] )
    #je compare X.X.X.X d'audessus avec le contenue de la colone 1 du tableau
    Ce que tu appelles la 'colonne 1' de ton tableau est-elle bien celle ayant l'index 1 et donc la seconde valeur de ton array?

    A ta place, j'essaierais un print pour vérifier si $new_ip et $switchs_database[$z][1] contiennent bien ce que tu veux.
    Tu peux également utiliser des signes marquant les extrémités afin de vérifier que tu n'aies pas d'espace ... ce n'est peut-être pas très élégant comme méthode mais c'est pratique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print '>'.$new_ip.'<>'$switchs_database[$z][1]."<\n";

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut
    Merci a vous de vouloir m'aider!! j'espere que tu va bien Jasmine!! tjs la pour m'aider c'est gentil!!
    Merci a toi Arioch!

    voila le resultat de ce que tu m'as mis Arioch

    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
     
    Adresse IP: 10.42.78.222
    port IP -> 13
    RECHERCHE TERMINE SUR LE SWITCH BACKBONE: SW01 	 10.42.78.1
    10.42.78.3
    var1 = '10.42.78.3' , var2 = '10.42.78.1'
    lundi 02/16/09 13:08:17 Error => L'IP: 10.42.78.3, n'est pas un switch
    var1 = '10.42.78.3' , var2 = '10.42.78.2'
    lundi 02/16/09 13:08:17 Error => L'IP: 10.42.78.3, n'est pas un switch
    var1 = '10.42.78.3' , var2 = '10.42.78.3'
    RECHERCHE SUR LE SWITCH : SW03 	 10.42.78.3
    port IP -> 10
    PORT A FAIRE SHOW_MAC: 10
    RESULTAT DE LA RECHERCHE :
     
    	 - SWITCH: SW03 	 IP: 10.42.78.3 	 MAC: 000c.297e.48a0 	 PORT: 10 	 VLAN: 10
     
    	 - SWITCH: SW03 	 IP: 10.42.78.3 	 MAC: 0011.4355.3f65 	 PORT: 10 	 VLAN: 10
     
    var1 = '10.42.78.3' , var2 = '10.42.78.4'
    lundi 02/16/09 13:08:20 Error => L'IP: 10.42.78.3, n'est pas un switch
    donc tu vois il passe bien dans la boucle if et apres else !!!!!!!
    Ahhh je sais!!! c'est a cause du IF , vu qu'il sont pas egale alors il envoie dans le else quand il parcours les autres ligne du @switchs_database!!! comment faire pour evité cela?? et comme j'ai plusieurs @ IP dans new_ip comment faire pour qu'il parcours la 2eme IP pour voir si elle est pas dans le @switchs_database?

    MERCI

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Il rentre au moins une fois dans le if car ton 3ème print des variables donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var1 = '10.42.78.3' , var2 = '10.42.78.3'
    Donc, ton if marche

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut
    oui !! mais c'est degueula..e de voir les messages d'erreurs quand il sont pas égale!! je voudrais juste qu'il y ait le message d'erreur quand l'ip est inconnue dans le @switchs_database c'est possible de faire un truc comme sa,?

    Faut peut etre que je fasse, si $new_ip existe dans @switchs_database alors... parceque la je fais "égal" donc il y a une différence! comment faire?

    MERCi

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 80
    Par défaut
    j'ai fais un truc comme sa:


    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
     
        my $nb = @adIP;
        my $nb2 = @switchs_database;
        for (my $x=0; $x < $nb; $x++ )
        {
            $new_ip = $adIP[$x];
    #       print ("$new_ip\n");                                                                                                
     
            for (my $z=0; $z < $nb2; $z++ )
            {
                if (grep ($new_ip, @switchs_database) )
                {
                    if ( $new_ip eq $switchs_database[$z][1] )
    		{
                        $switch_name = $switchs_database[$z]->[0];
                        $switch_ip  = $switchs_database[$z]->[1];
                        $user_login = $switchs_database[$z]->[2];
                        $user_password = $switchs_database[$z]->[3];
     
                        print ("RECHERCHE SUR LE SWITCH : $switch_name \t $switch_ip\n");
                        ($telnet_session) = &connexion($switch_name,$switch_ip,$user_login,$user_password);
                        ($port_found, @find_tab) = &search($switch_name,$switch_ip,$user_login,$user_password,$telnet_session);
                        &print_result($switch_name,$switch_ip,$user_login,$user_password,$port_found,$telnet_session);
                        &deconnexion($telnet_session, $switch_name, $switch_ip);
                    }
                }
                else
                {
                    &print_error("L'IP: $new_ip, n'est pas un switch\n");
                }
            }
        }
    Mais maintenant plus rien ne va dans le else... je pense le grep n'est pas bien formé!
    Mais pourtant sa marche le script manque plus qu'a me dire quand l'ip est pas dans le @switchs_databe.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] [SQL] Retour d'un SELECT pour un IF/ELSE
    Par nys_00 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 17/03/2005, 12h50
  2. If Then Else
    Par Piout dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 24/02/2005, 16h09
  3. IF THEN ELSE imbriqués
    Par nuke_y dans le forum Oracle
    Réponses: 2
    Dernier message: 15/11/2004, 14h57
  4. [LG]Problème avec if/else.
    Par Loceka dans le forum Langage
    Réponses: 7
    Dernier message: 02/11/2004, 10h10
  5. [CR 7] [débutante] pb avec if then else
    Par xs_nady dans le forum Formules
    Réponses: 8
    Dernier message: 28/05/2004, 15h36

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