Můžete použít getent
, který je dodáván s glibc
(takže to téměř jistě máte na Linuxu). To se vyřeší pomocí gethostbyaddr/gethostbyname2, a tak se také zkontroluje /etc/hosts
/NIS/etc:
getent hosts unix.stackexchange.com | awk '{ print $1 }'
Nebo, jak řekl Heinzi níže, můžete použít dig
pomocí +short
argument (dotazuje se přímo na servery DNS, nehledá /etc/hosts
/NSS/etc):
dig +short unix.stackexchange.com
Pokud dig +short
není k dispozici, měla by fungovat kterákoli z následujících možností. Všechny se dotazují přímo na DNS a ignorují ostatní způsoby rozlišení:
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 }'
Pokud chcete tisknout pouze jednu IP adresu, přidejte exit
příkaz na awk
pracovní postup uživatele.
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 }'
S host
z balíčku dnsutils:
$ host unix.stackexchange.com
unix.stackexchange.com has address 64.34.119.12
(Opraveno název balíčku podle komentářů. Poznámka:ostatní distribuce mají host
v různých balíčcích:Debian/Ubuntu bind9-host , openSUSE bind-utils , Frugalware bind .)
Mám na svém stroji nástroj, který, jak se zdá, dělá svou práci. Manová stránka ukazuje, že se zdá, že přichází s mysql... Zde je návod, jak jej můžete použít:
resolveip -s unix.stackexchange.com
64.34.119.12
Návratová hodnota tohoto nástroje se liší od 0, pokud název hostitele nelze přeložit:
resolveip -s unix.stackexchange.coma
resolveip: Unable to find hostid for 'unix.stackexchange.coma': host not found
exit 2
AKTUALIZACE Na fedoře je dodáván s mysql-serverem:
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
Myslím, že by to vytvořilo zvláštní závislost pro váš skript...