Quelle est la manière la plus simple d'obtenir l'adresse IP d'un nom d'hôte?
Je pensais à essayer un ping
et à l'analyser à partir de la sortie. Cependant, cela ne semble pas très agréable et ne fonctionnera probablement pas de la même manière sur tous les systèmes.
J'ai cherché un peu et trouvé des solutions avec nslookup
, mais cela ne fonctionne pas pour les noms d'hôtes dans /etc/hosts
.
Réponses:
Vous pouvez le faire avec des appels système standard. Voici un exemple en Perl:
produit la sortie:
(Sur la ligne de commande, le même script peut être écrit comme suit
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print Dumper(\@ips)'
:)Vous pouvez le faire de manière similaire dans d'autres langues - voir la page de manuel pour les appels système sur
man -s3 gethostbyname
etc.la source
perl -MSocket -MData::Dumper -wle'my @addresses = gethostbyname("www.google.com"); my @ips = map { inet_ntoa($_) } @addresses[4 .. $#addresses]; print $ips[0]'
.sed -e '/some people consider Perl a better form/s/better/worse/'
SCNRhost <hostname>
Ex:
Éditer
Sous Linux, (et certaines variantes d'OS X, au moins), vous pourriez être en mesure d'utiliser
resolveip
, qui fait partie du package serveur MySQL:la source
/etc/hosts
.) Essayezhost localhost
.serv ~ $ host localhost \n localhost has address 127.0.0.1
resolveip
.resolveip
n'est pas installé par défaut sur ma Debian.Ce poste ancien semble avoir de nombreuses solutions créatives.
Si je dois m'assurer que l'
/etc/hosts
accès est également disponible , j'ai tendance à utilisergetent hosts somehost.com
Cela fonctionne, au moins si `/etc/nsswitch.conf 'a été configuré pour utiliser des fichiers (comme c'est généralement le cas).
la source
ahosts
qu'il renvoie des informations sur plusieurs lignes.Pour IPv4, il existe un programme standard qui fonctionne immédiatement avec le résolveur, y compris / etc / hosts:
Il fait partie de Debian, installez-le avec:
Pour d'autres protocoles que IPv4 (comme IPv6), je ne connais actuellement pas d'outil similaire. Mise à jour: Pour cette raison, je viens d'écrire un petit outil qui est également capable de résoudre IPv6:
https://github.com/hilbix/misc/blob/master/src/ipof.c
Il est conçu pour une utilisation rapide et sale du shell,
gethostip
mais permet également IPv6:Il peut également être utilisé de manière interactive, par exemple:
HTH
la source
Pourquoi pas
dig +short hostname
?(requête DNS)
la source
/etc/hosts
compte.Eh bien, ma solution actuelle:
la source
sed
comportement soit légèrement différent sur chaque système. :) Comme c'est ennuyeux. Je l'ai un peu changé, je pense que ça devrait marcher partout maintenant.Sur certains Unices, les éléments suivants fonctionneront:
Par exemple sur Mac OS X, j'obtiens ceci:
la source
arp -n hostname
montre l'IP.L'utilisation
ping
n'est pas si mauvaise que cela, car vous n'avez généralement pas de fortes dépendances.Voici la fonction que j'ai utilisée sur les systèmes Linux:
la source
la source