GNU/Linux >> Znalost Linux >  >> Linux

Jak přeložit název hostitele na IP adresu v Bash skriptu?

Jaký je nejvýstižnější způsob, jak přeložit název hostitele na IP adresu ve skriptu Bash? Používám Arch Linux.

Přijatá odpověď:

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í na /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 vytisknout pouze jednu IP, přidejte exit příkaz k awk pracovní postup.

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 }'

Linux
  1. Jak přidat uživatele Unix/linux do skriptu Bash?

  2. Jak rozdělit řetězec ve skriptu Bash

  3. Jak spustit skript shellu na konzole Unix nebo terminálu Mac?

  1. Jak zvýraznit Bash skripty ve Vimu?

  2. Jak předat parametry skriptu Bash?

  3. Jak opakovaně spouštět bash skript každých N sekund?

  1. Jak ladit Bash skript?

  2. Jak nastavit parametry, když Pipe Bash Script to Bash?

  3. Jak volat funkci Bash ve skriptu Bash uvnitř Awk?