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

Python Discussion :

manipulation/comparaison d'adresse reseau


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut manipulation/comparaison d'adresse reseau
    Bonjour tout le monde,

    Voilà je dois écrire un script sur python qui me permette de comparer des adresses reseau entre elles du type:
    @1 = x1.x2.x3.x4. et @2 = y1.y2.y3.y4.
    A l'issu de cette comparaison, on choisira la plage la plus grande.

    Est ce que quelqu'un pourrait m'eclairer, je n'y arrive pas!!!

  2. #2
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Je connais que dalle en réseau (si si ), donc, je ne sais pas ce que tu veux dire par plage plus grande mais je pense que tu peux utiliser les expressions régulières pour résoudre ton problème.
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    >>> import re
    >>> ip_address = '192.168.0.20'
    >>> regex = re.compile('(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})')
    >>> match_ip = regex.match(ip_address)
    >>> x1 = int(match_ip.groups()[0])
    >>> x2 = int(match_ip.groups()[1])
    >>> x3 = int(match_ip.groups()[2])
    >>> x4 = int(match_ip.groups()[3])
    De cette façon, tu peux extraire x1, x2, x3 et x4, donc les comparer à y1, y2, y3 et y4. J'espère que c'est ça que tu cherches.
    Enfin, j'espère que je ne me suis pas planté dans mon motif.

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Autre idée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ip1="192.168.0.20"
    ip2="192.168.0.50"
    i1,i2,i3,i4=map(int,ip1.split('.'))
    j1,j2,j3,j4=map(int,ip2.split('.'))
    Avec cela, on a directement i1=192, i2=168, etc...

    Tu peux ensuite comparer i1 avec j1, i2 avec j2, etc...

    Mais après, je n'ai pas bien compris ce que tu veux en faire.

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut
    Au risque de passer pour un blaireau (moi non plus j'ai pas trop piger le but... m'enfin), pourquoi ne pas faire tou simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ip1="192.168.35.20"
    ip2="160.190.0.50"
     
    >>> final_ip= ip1 if ip1>=ip2 else ip2
    >>> final_ip
    '192.168.35.20'
    #ou
    >>> final_ip='.'join([int(x[0])>=int(x[1]) and x[0] or x[1] for x in zip(ip1.split('.'),ip2.split('.'))])
    >>> final_ip
    '192.190.35.50'

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Citation Envoyé par N.tox Voir le message
    Au risque de passer pour un blaireau [...]
    Bravo, c'est réussi
    Je ne dis pas ça par méchanceté, mais tu es allé chercher le bâton pour te faire battre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> ip1="192.168.0.20"
    >>> ip2="80.11.200.1"
    >>> ip1 if ip1>=ip2 else ip2
    '80.11.200.1'  # hum
    >>> '.'.join([int(x[0])>=int(x[1]) and x[0] or x[1] for x in zip(ip1.split('.'),ip2.split('.'))])
    '192.168.200.20'  # bof
    Plus sérieusement, le PO n'est pas clair car il parle d'abord d'adresses puis d'une plage [d'adresses].

  6. #6
    Membre éclairé
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Points : 773
    Points
    773
    Par défaut

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je vous remercie tous pour votre aide, c'est plus clair pour moi maintenant!
    J'avoue que je n'ai pas été tres clair dans mon PO!

    Au fait, je dois réaliser une comparaison entre adresses ip du type (x1.x2.x3.x4/x). Puis voir l'adresse qui appartient au plus grand réseau. Cela se fait par comparaison des "netmask" de mes diff. adresses (c'est la valeur du x). En effet, plus x est grand, plus la plage réseau est restreinte!

    ok!? desolé encore pour le manque de clareté les gars! dc je planche sur ca encore! je vous tiens au courant!

  8. #8
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    OK, là c'est plus clair , pour extraire x:
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>> import re
    >>> ip_address = '192.168.0.20/24'
    >>> regex = re.compile('(\d{1,3}(\.|\/)){4}(\d+)')
    >>> match = regex.match(ip_address)
    >>> x = int(match.groups()[2])
    >>> print x
    24

  9. #9
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Même si je suis souvent impressionné par les expressions régulières, c'est souvent plus simple sans:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ip = '192.168.0.20/24'
    print ip.split('/')[-1]
    24
    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

Discussions similaires

  1. Alias, redirection adresse réseau + port
    Par pafpaf dans le forum Réseau
    Réponses: 10
    Dernier message: 23/11/2006, 06h48
  2. Réponses: 2
    Dernier message: 15/05/2006, 22h22
  3. Comparaison d'adresse en hexa.
    Par molo2003 dans le forum MFC
    Réponses: 6
    Dernier message: 08/04/2006, 09h38
  4. Quest ce qu'une adresse reseau publique ?
    Par WOLO Laurent dans le forum Développement
    Réponses: 3
    Dernier message: 09/08/2003, 12h35
  5. Adresse reseau mappée
    Par WOLO Laurent dans le forum Développement
    Réponses: 4
    Dernier message: 28/07/2003, 10h20

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