Solution 1 :
Ceci est facilement réalisé avec getent
:
getent hosts 127.0.0.1
getent
effectuera des recherches pour tout type de données configurées dans nsswitch.conf
.
Solution 2 :
Un outil qui fonctionnerait est getent
. Vous pouvez donc utiliser getent hosts www.google.com
, ou getent hosts localhost
. Il récupérera les entrées des bases de données comme spécifié dans la configuration de votre commutateur de service de noms /etc/nsswitch.conf
.
Pour des implémentations plus modernes, utilisez getent ahosts www.google.com
qui obtiendra plusieurs résultats.
Solution 3 :
Utilisez getent ahosts
, par exemple :
$ getent ahosts www.google.com | sed -n 's/ *STREAM.*//p'
216.58.210.196
2a00:1450:4006:803::2004
Vous obtiendrez toutes les adresses IPv4 et IPv6, via le résolveur glibc (donc en utilisant /etc/hosts
d'abord, comme généralement configuré dans /etc/nsswitch.conf
).
Ne pas utiliser getent hosts
, car il vous donnera des adresses IPv6 ou IPv4 (pas les deux), et le protocole choisi peut ne pas être celui qui ne fonctionne pas. En effet, les adresses IPv6 sont généralement privilégiées, mais à certains endroits, les données IPv6 sont filtrées (non supportées) par les routeurs.
Solution 4 :
Vous pouvez utiliser un wrapper gethostbyname() (obsolète) comme :
python -c 'import socket;print socket.gethostbyname("www.google.com")'
Ou un wrapper getaddrinfo() comme :
python -c 'import socket;print socket.getaddrinfo("www.google.com","http")[0][4][0]'
Notez que getaddrinfo renverra toutes les instances sous forme de liste. La dernière partie de la commande sélectionne uniquement le premier tuple. Cela peut également renvoyer des adresses IPv6.
Solution 5 :
resolveip
va le faire.
Curieusement, cela fait partie des packages mysql-server sur RHEL et Ubuntu.