Lösung 1:
Mit getent
ist dies ganz einfach möglich :
getent hosts 127.0.0.1
getent
sucht nach allen Arten von Daten, die in nsswitch.conf
konfiguriert sind .
Lösung 2:
Ein Werkzeug, das funktionieren würde, ist getent
. Sie könnten also getent hosts www.google.com
verwenden , oder getent hosts localhost
. Es ruft Einträge aus den Datenbanken ab, wie in Ihrer Name Service Switch-Konfiguration angegeben /etc/nsswitch.conf
.
Verwenden Sie für modernere Implementierungen getent ahosts www.google.com
wodurch mehrere Ergebnisse erzielt werden.
Lösung 3:
Verwenden Sie getent ahosts
, zum Beispiel:
$ getent ahosts www.google.com | sed -n 's/ *STREAM.*//p'
216.58.210.196
2a00:1450:4006:803::2004
Sie erhalten alle IPv4- und IPv6-Adressen über den Glibc-Resolver (also mit /etc/hosts
zuerst, wie normalerweise in /etc/nsswitch.conf
konfiguriert ).
Verwenden Sie nicht getent hosts
, da es Ihnen entweder IPv6- oder IPv4-Adressen (nicht beides) gibt und das ausgewählte Protokoll möglicherweise nicht eines ist, das nicht funktioniert. Tatsächlich werden IPv6-Adressen im Allgemeinen bevorzugt, aber an einigen Stellen werden IPv6-Daten von den Routern gefiltert (nicht unterstützt).
Lösung 4:
Sie können einen Wrapper gethostbyname() (veraltet) verwenden wie:
python -c 'import socket;print socket.gethostbyname("www.google.com")'
Oder ein getaddrinfo() Wrapper wie:
python -c 'import socket;print socket.getaddrinfo("www.google.com","http")[0][4][0]'
Beachten Sie, dass getaddrinfo alle Instanzen als Liste zurückgibt. Der letzte Teil des Befehls wählt nur das erste Tupel aus. Dies kann auch IPv6-Adressen zurückgeben.
Lösung 5:
resolveip
werde dies tun.
Seltsamerweise ist es Teil der mysql-server-Pakete auf RHEL und Ubuntu.