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

wxPython Discussion :

Pb de comptage d'adresse IP


Sujet :

wxPython

  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut Pb de comptage d'adresse IP
    C'est encore moi avec un nouveau problème...
    J'ai établit un bout de script qui me compte le nombre d'adresse IP dans une plage. Voici le compte fonctionnel qui marche avec des IP entre xxx.xxx.8.xxx à xxx.xxx.11.xxx. enfin qui marche, pas tout à fait, des que je test avec un passage de la plage 9 à 10 ca tourne sans fin. Sinon ca fonctionne. J'ai beau regarde le passage de ces deux plages, j'ai pas trouvé de problème. Surtout que j'utilise deja ce script pour faire mes recherches sur les IP (Lance un script à chaque nouvelle IP).

    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
    # -*- coding: cp1252 -*-
    ### Librairies utiles
    import string           #Permet de faire des operations sur les chaines de caractères (atoi : transforme un string et int)
    import os               #Permet de faire des operations systeme
    import re
    ###
     
    adr_deb = "172.18.9.254"
    adr_fin = "172.18.10.2"
    plage = "Neuf"
     
    boucleip = 0
    adr_ip = adr_deb
    adr_ip_nb = ""
    nbip = 1                        #On initialise le nombre d'IP à 1
    plagecompt = plage
    i = 0
     
    if plagecompt == "Huit" or plagecompt == "Neuf":
                    while boucleip == 0:
                            if adr_ip.strip() == adr_fin.strip():
                                    boucleip = 1
                            else:
                                    adr_ip_old = adr_ip[0:9]                                            #On sauvegarde le début de l'IP
                                    adr_ip_nb_new = string.atoi(adr_ip[9:12])                           #On transforme la chaine en nombre du dernier chiffre
                                    adr_ip_nb_new = adr_ip_nb_new + 1
                                    nbip = nbip + 1
                                    adr_ip_nb_new = repr(adr_ip_nb_new)                                 #On transforme le nombre en chaine
                                    adr_ip = adr_ip_old + adr_ip_nb_new
                                    if adr_ip[9:12] == "256":
                                        if plagecompt == "Huit":
                                            adr_ip = re.sub("8.256", "9.1", adr_ip)
                                            plagecompte = "Neuf"
                                        else:
                                            adr_ip = re.sub("9.256", "10.1", adr_ip)
                                            plagecompt = "Dix"
                                            boucleip = 1
    #####################
    boucleip = 0                                                                                #On remet la boucle à Zéro
    #####################
    if plagecompt == "Dix" or plagecompt == "Onze":
                    while boucleip == 0:
                            if adr_ip.strip() == adr_fin.strip():
                                    boucleip = 1
                            else:
                                    adr_ip_old = adr_ip[0:10]                                           #On sauvegarde le début de l'IP
                                    adr_ip_nb_new = string.atoi(adr_ip[10:13])                          #On transforme la chaine en nombre du dernier chiffre
                                    adr_ip_nb_new = adr_ip_nb_new + 1
                                    nbip = nbip + 1
                                    adr_ip_nb_new = repr(adr_ip_nb_new)                                 #On transforme le nombre en chaine
                                    adr_ip = adr_ip_old + adr_ip_nb_new
                                    if adr_ip[10:13] == "256":
                                        if plagecompt == "Dix":
                                            adr_ip = re.sub("10.256", "11.1", adr_ip)
                                            plagecompt = "Onze"
     
    print "nbip = ", nbip
    Une idée pour l'améliorer?

    EDIT : En fait ca marche tout le temps. Il faut juste que la plage de départ soit bonne sinon ca merde un peu. Je le marque en résolution car j'ai bien cerne en amont pour que la plage soit bonne. Je ne supprime pas mon message poru les personnes voulant faire ce genre de comptage.

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    si j'ai bien compris ton problème, tu veux effectuer une """soustraction""" pour calculer le nombre d'adresses entre tes deux IP, c'est ça?

    Pourquoi n'utilises-tu pas les masques réseaux?

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    Parce que j'y est pas pensé et que je voulais faire au plus vite pour me mettre sur plus gros souci actuel, ma barre de progression, j'en ch.. un peu mais c'est bien j'avance lol...

    Mais sinon cela fonctionne, assez rapidement, merci de ta réponse, je vérai pour refaire plus optimiser quand j'aurais fini le plus gros du boulot.
    Sinon à un moment j'avais pensé tout faire en binaire, compter se fait facilement.

    Bref je t'avoue que j'avais écris ce code pour faire une execution en boucle de recherche d'IP sur les CISCO, et j'avais besoin de ce nombre pour ma barre de progression, j'ai donc tout simplement fait du copier coller lol!!!

    EDIT : Je suis entrain de réfléchir, j'ai un trou de mémoire comment fais tu avec les masques pour compter les IP. Car là comme ca je vois plus lol, ca me rafraichiras la mémoire.

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Bonjour,

    je ne comprends pas comment tu obtiens tes adresses de début et de fin sur ton CISCO.
    tu les extrais de tes tables de routage?

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 84
    Par défaut
    En fait c'est juste un bout de scripts. En réalité, j'ai un menu, et un choix pour lequel je donne une plage IP et j'obtiens cette adresse de debut et de fin.
    Quand j'ai un problème, une erreur, j'isole juste le ou les codes pour les faire fonctionner seul. La j'avais juste isoler le tout, pour voir s'il comptait bien, vu que j'avais quelques soucis. Mais le problème était d'une part en amont, sur la var plage, je donne entre guillement la plage de départ. 8-9-10-11 dans mon cas.

    Pour ce qui est des CISCO, non j'extrait pas, ca serai une solution pas mal pour automatiser mais je préfere que l'utilisateur (Moi en l'occurence et un choix manuel).

    Sinon pour infos j'ai terminé toute cette partie là, mon plus gros problème à été l'implementation de la barre de prog et que ca tombe juste avec mes divisions.
    (J'ai triche un peu en remontant à 100 % quand c'est pas le cas lol!!!) Bref j'arrete mon romans, à plus et merci.

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

Discussions similaires

  1. Comment récupérer une adresse MAC ?
    Par psau dans le forum Développement
    Réponses: 7
    Dernier message: 19/07/2002, 17h26
  2. Déterminer l'adresse d'une application en mémoire
    Par Gib dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 11/06/2002, 14h27
  3. changer l'adresse d'un fichier...
    Par cava dans le forum C
    Réponses: 6
    Dernier message: 05/06/2002, 12h22
  4. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/05/2002, 17h29

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