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

Linux Discussion :

Conversion d'un "label" en adresse IP


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut Conversion d'un "label" en adresse IP
    Bonjour,

    je cherche une fonction Linux qui permette de trandformer un les label du fichier host en adresse IP.

    En effet je cherche les adresses IP affectées à mon poste de travail en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifConfig | grep 127.0.0.1
    (par exemple)

    mais je voudrais que ça marche aussi en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifConfig | grep localhost
    (par exemple)

    En fait, je souhaite utiliser la valeure renvoyée par la fonction grep à l'aide de la fonction c system. (Un grep renvoie 0 s'il trouve au moins une fois la chaine de caractère recherchée.) Je voudrais que cela soit faisable aussi bien avec les adresses IP en dur et les labels du fichier host correspondant à des adresses IP.

    Je ne sais pas si j'ia été clair

    Si une bonne âme pouvait m'aider...

    merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    j ai un peut de mal a suivre ta question :
    cette recuperation tu dois la faire en C ou en script ?
    en C il existe les 2 fonction :
    gethostbyname, gethostbyaddr qui comme leur nom l'indique recupere soit a partir du non soit a partir de l'adresse.
    en script cela va donner quelque choses comme :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    grep nom_du_host /etc/hosts| awk '{print $2}'
    #pour recuperer l'adresse a partir du nom
    grep ip_rechercher /etc/hosts| awk '{print $1}'
    #pour recuperer le nom à partir de l'adresse IP

  3. #3
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: Conversion d'un "label" en adresse IP
    Bonjour,

    Citation Envoyé par Aradesh
    je cherche une fonction Linux qui permette de trandformer un les label du fichier host en adresse IP.
    Normalement, le fichier /etc/hosts, si c'est bien de lui que tu parles, se suffit à lui même. Il devrait contenir des t-uples (nom, aliases, IP) suffisants pour les machines connues localement. Pour toutes les autres, le service DNS fournit ces renseignements.

    Les fonctions d'interrogation du service de nom sont utilisables pour ça : nslookup, host ou dig.

    Citation Envoyé par Aradesh
    En effet je cherche les adresses IP affectées à mon poste de travail en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifConfig | grep 127.0.0.1
    (par exemple)

    mais je voudrais que ça marche aussi en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifConfig | grep localhost
    (par exemple)
    En procédant ainsi, tu fais une supposition sur l'adresse effective que tu cherches à trouver parmi les adresses du poste de travail ...

    Il est possible de connaître toutes les adresses d'un coup au moyen d'un enchainement de commandes. Quelquechose comme ça fournit la liste des IP du poste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifconfig | grep "inet adr:" | tr -s " " | cut -f 3 -d " " | cut -f 2 -d ":"
    On peut alors utiliser host pour interroger la résolution de nom pour chaque adresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $( ifconfig | grep "inet adr:" | tr -s " " | cut -f 3 -d " " | cut -f 2 -d ":" ) ; do host $i ; done | cut -f 5 -d " " | sed s/.$//
    Une telle ligne de commande suppose, par contre, que les DNS soient valides pour les IP considérées

    Citation Envoyé par Aradesh
    En fait, je souhaite utiliser la valeure renvoyée par la fonction grep à l'aide de la fonction c system. (Un grep renvoie 0 s'il trouve au moins une fois la chaine de caractère recherchée.) Je voudrais que cela soit faisable aussi bien avec les adresses IP en dur et les labels du fichier host correspondant à des adresses IP.
    Tu peux envisager de vérifier au préalable si ta "valeur" est une IP numérique ou bien un nom. Dans le cas de l'IP numérique, tu fais comme d'habitude, mais dans le cas du nom, tu fais une résolution par host, tu coupes le résultat à l'IP numérique et tu peux refaire ton grep habituel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ifconfig | grep $( host localhost | cut -f 4 -d " " )
    Citation Envoyé par Aradesh
    Je ne sais pas si j'ia été clair
    Moi non plus
    Alors j'ai répondu dans tous les sens en espérant que tu trouveras ton bonheur pour résoudre ton problème.

    Bon courage

  4. #4
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 79
    Points : 46
    Points
    46
    Par défaut
    En fait mon truc se passe en deux étapes. Tout d'abord je fais un ping pour savoir si une adresse IP existe et ensuite je veut tester si c'est "moi" qui possède cette adresse.

    Or l'adresse que je possède peut être soit une adresse IP soit un label du fichier host (ça peut être l'un ou l'autre)

    Merci pour vos renseignements qui m'ont bien aidés. la solution est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifconfig | grep `ping -c1 %s | grep PING | cut -f 2 -d "(" | cut -f 1  -d ")"`
    Dans mon code en c, j'utilise la fonction system à laquelle je passe en paramètre la commande si dessus (dans laquelle %s est remplacé par le label ou l'adresse IP en dur) et je regarde la valeur de retour renvoyé par system. Si c'est 0, c'est bien moi qui ait la main sur l'adresse IP.

  5. #5
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par Aradesh
    Merci pour vos renseignements qui m'ont bien aidés. la solution est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifconfig | grep `ping -c1 %s | grep PING | cut -f 2 -d "(" | cut -f 1  -d ")"`
    Alors, si tu as la solution, c'est [Résolu]
    (le bouton en bas à gauche de ce fil, en étant connecté ...)

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