Bonjour,
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.
Envoyé par
Aradesh
En effet je cherche les adresses IP affectées à mon poste de travail en faisant :
1 2
|
ifConfig | grep 127.0.0.1 |
(par exemple)
mais je voudrais que ça marche aussi en faisant :
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 :
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 :
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
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 :
ifconfig | grep $( host localhost | cut -f 4 -d " " )
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
Partager