Dotychczasowe rozwiązania działają głównie w prostszym przypadku: nazwa hosta jest tłumaczona bezpośrednio na pojedynczy adres IPv4. Może to być jedyny przypadek, w którym musisz rozwiązać nazwy hostów, ale jeśli nie, poniżej znajduje się dyskusja na temat niektórych spraw, które mogą być konieczne.
Chris Down i Heinzi krótko omówili przypadek, w którym nazwa hosta rozwiązuje się na więcej niż jednym adresie IP. W tym przypadku (i innych poniżej) podstawowe skrypty przy założeniu, że nazwa hosta bezpośrednio rozpoznaje pojedynczy adres IP, mogą ulec uszkodzeniu. Poniżej przykład z nazwą hosta tłumaczącą się na więcej niż jeden adres IP:
$ host www.l.google.com
www.l.google.com has address 209.85.148.147
www.l.google.com has address 209.85.148.103
www.l.google.com has address 209.85.148.99
www.l.google.com has address 209.85.148.106
www.l.google.com has address 209.85.148.105
www.l.google.com has address 209.85.148.104
Ale co to jest www.l.google.com
? W tym miejscu należy wprowadzić przypadek aliasu . Sprawdźmy poniższy przykład:
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.39.103
www.l.google.com has address 74.125.39.147
www.l.google.com has address 74.125.39.105
www.l.google.com has address 74.125.39.99
www.l.google.com has address 74.125.39.106
www.l.google.com has address 74.125.39.104
Nie www.google.com
dotyczy to bezpośrednio adresów IP, ale alias, który sam przekształca się w wiele adresów IP. Aby uzyskać więcej informacji na temat aliasów, sprawdź tutaj . Oczywiście możliwy jest przypadek, w którym alias ma jeden adres IP, jak pokazano poniżej:
$ host g.www.ms.akadns.net
g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net has address 207.46.19.190
Ale czy można powiązać aliasy? Odpowiedź brzmi tak:
$ host www.microsoft.com
www.microsoft.com is an alias for toggle.www.ms.akadns.net.
toggle.www.ms.akadns.net is an alias for g.www.ms.akadns.net.
g.www.ms.akadns.net is an alias for lb1.www.ms.akadns.net.
lb1.www.ms.akadns.net has address 207.46.19.254
$ host www.google.fr
www.google.fr is an alias for www.google.com.
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 74.125.39.147
www.l.google.com has address 74.125.39.103
www.l.google.com has address 74.125.39.99
www.l.google.com has address 74.125.39.106
www.l.google.com has address 74.125.39.104
www.l.google.com has address 74.125.39.105
Nie znalazłem żadnego przykładu, w którym nazwa hosta jest tłumaczona na alias, który nie jest rozpoznawany na adres IP, ale myślę, że może tak być.
Więcej niż wiele adresów IP i aliasów, czy są jakieś inne specjalne przypadki ... a co z IPv6? Możesz spróbować:
$ host ipv6.google.com
ipv6.google.com is an alias for ipv6.l.google.com.
ipv6.l.google.com has IPv6 address 2a00:1450:8007::68
Gdzie ipv6.google.com
nazwa hosta to nazwa hosta tylko IPv6. Co z nazwami hostów z dwoma stosami:
$ host www.facebook.com
www.facebook.com has address 66.220.153.15
www.facebook.com has IPv6 address 2620:0:1c08:4000:face:b00c::
Znowu o IPv6, jeśli twój host jest tylko IPv4, nadal możesz rozwiązać adresy IPv6 (testowane na WinXP tylko dla IPv4 i na ipv6.google.com, możesz wypróbować to na Linuksie). W takim przypadku rozdzielczość się powiedzie, ale ping nie powiedzie się z komunikatem o błędzie nieznanego hosta . Może to być przypadek, w którym skrypt nie działa.
Mam nadzieję, że te uwagi były przydatne.
getent <ahosts|ahostsv4|ahostsv6|hosts> <hostname>
odpowiedź jest gdzieś u dołu. Jest najprostszy, nie wymaga żadnych dodatkowych pakietów i jest łatwiejszy do analizy ze skryptu Bash.