GNU/Linux >> Linux Esercitazione >  >> Linux

Come risolvere un nome host in un indirizzo IP in uno script Bash?

Qual è il modo più conciso per risolvere un nome host in un indirizzo IP in uno script Bash? Sto usando Arch Linux.

Risposta accettata:

Puoi usare getent , che viene fornito con glibc (quindi quasi sicuramente lo hai su Linux). Questo si risolve usando gethostbyaddr/gethostbyname2, quindi controllerà anche /etc/hosts /NIS/ecc:

getent hosts unix.stackexchange.com | awk '{ print $1 }'

Oppure, come ha detto Heinzi di seguito, puoi usare dig con il +short argomento (interroga direttamente i server DNS, non guarda /etc/hosts /NSS/ecc) :

dig +short unix.stackexchange.com

Se dig +short non è disponibile, uno qualsiasi dei seguenti dovrebbe funzionare. 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 desideri stampare un solo IP, aggiungi exit comando a awk flusso di lavoro.

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. Come eseguire il debug di uno script Bash?

  2. Come dividere una stringa nello script Bash

  3. Script bash di Linux per estrarre l'indirizzo IP

  4. Come eseguire ripetutamente lo script bash ogni N secondi?

  5. Come posso risolvere un nome host in un indirizzo IP in uno script Bash?

Come eseguire uno script Bash {7 metodi}

Come scrivere uno script Bash con esempi

Come configurare l'indirizzo IP statico in Linux e Unix

Come eseguire uno script Bash

Come posso controllare la sintassi di uno script Bash senza eseguirlo?

Come eseguire uno script bash?