Puoi usare getent
, che viene fornito con glibc
(quindi quasi sicuramente ce l'hai su Linux). Questo si risolve usando gethostbyaddr/gethostbyname2, quindi controllerà anche /etc/hosts
/NIS/etc:
getent hosts unix.stackexchange.com | awk '{ print $1 }'
Oppure, come ha detto Heinzi sotto, puoi usare dig
con il +short
argomento (interroga direttamente i server DNS, non guarda /etc/hosts
/NSS/etc) :
dig +short unix.stackexchange.com
Se dig +short
non è disponibile, dovrebbe funzionare una qualsiasi delle seguenti opzioni. Tutti questi interrogano direttamente il DNS e ignorano altri mezzi di risoluzione:
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 }'
Se vuoi stampare solo un IP, aggiungi exit
comando a awk
flusso di lavoro di.
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 }'
Con host
dal pacchetto dnsutils:
$ host unix.stackexchange.com
unix.stackexchange.com has address 64.34.119.12
(Corretto nome del pacchetto in base ai commenti. Come nota altre distribuzioni hanno host
in diversi pacchetti:Debian/Ubuntu bind9-host , openSUSE bind-utils , Frugalware lega .)
Ho uno strumento sulla mia macchina che sembra fare il lavoro. La pagina man mostra che sembra venire con mysql... Ecco come potresti usarlo:
resolveip -s unix.stackexchange.com
64.34.119.12
Il valore di ritorno di questo strumento è diverso da 0 se il nome host non può essere risolto :
resolveip -s unix.stackexchange.coma
resolveip: Unable to find hostid for 'unix.stackexchange.coma': host not found
exit 2
AGGIORNA Su fedora, viene fornito con 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
Immagino che creerebbe una strana dipendenza per il tuo script...