Sie können getent
verwenden , die mit glibc
geliefert wird (Sie haben es also mit ziemlicher Sicherheit unter Linux). Dies wird mithilfe von gethostbyaddr/gethostbyname2 aufgelöst und überprüft daher auch /etc/hosts
/NIS/etc:
getent hosts unix.stackexchange.com | awk '{ print $1 }'
Oder, wie Heinzi unten sagte, Sie können dig
verwenden mit dem +short
Argument (fragt DNS-Server direkt ab, schaut nicht auf /etc/hosts
/NSS/etc) :
dig +short unix.stackexchange.com
Wenn dig +short
nicht verfügbar ist, sollte eine der folgenden Methoden funktionieren. All diese fragen DNS direkt ab und ignorieren andere Auflösungsmethoden:
host unix.stackexchange.com | awk '/has address/ { print $4 }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }'
Wenn Sie nur eine IP drucken möchten, dann fügen Sie den exit
hinzu Befehl an awk
Arbeitsablauf von .
dig +short unix.stackexchange.com | awk '{ print ; exit }'
getent hosts unix.stackexchange.com | awk '{ print $1 ; exit }'
host unix.stackexchange.com | awk '/has address/ { print $4 ; exit }'
nslookup unix.stackexchange.com | awk '/^Address: / { print $2 ; exit }'
dig unix.stackexchange.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 ; exit }'
Mit host
aus dem dnsutils-Paket:
$ host unix.stackexchange.com
unix.stackexchange.com has address 64.34.119.12
(Korrigiert Paketname gemäß den Kommentaren. Als Anmerkung, andere Distributionen haben host
in verschiedenen Paketen:Debian/Ubuntu bind9-host , openSUSE bind-utils , Frugalware binden .)
Ich habe ein Werkzeug auf meiner Maschine, das die Arbeit zu erledigen scheint. Die Manpage zeigt, dass es mit mysql geliefert wird... So könnten Sie es verwenden:
resolveip -s unix.stackexchange.com
64.34.119.12
Der Rückgabewert dieses Tools unterscheidet sich von 0, wenn der Hostname nicht aufgelöst werden kann:
resolveip -s unix.stackexchange.coma
resolveip: Unable to find hostid for 'unix.stackexchange.coma': host not found
exit 2
AKTUALISIEREN Auf Fedora kommt es mit mysql-server :
yum provides "*/resolveip"
mysql-server-5.5.10-2.fc15.x86_64 : The MySQL server and related files
Dépôt : fedora
Correspondance depuis :
Nom de fichier : /usr/bin/resolveip
Ich schätze, es würde eine seltsame Abhängigkeit für Ihr Skript erzeugen ...