GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo resolver un nombre de host en una dirección IP en un script Bash?

¿Cuál es la forma más concisa de resolver un nombre de host en una dirección IP en un script Bash? Estoy usando Arch Linux.

Respuesta aceptada:

Puedes usar getent , que viene con glibc (así que casi seguro que lo tienes en Linux). Esto se resuelve usando gethostbyaddr/gethostbyname2, y también verificará /etc/hosts /NIS/etc:

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

O, como dijo Heinzi a continuación, puede usar dig con el +short argumento (consulta servidores DNS directamente, no mira /etc/hosts /NSS/etc) :

dig +short unix.stackexchange.com

Si dig +short no está disponible, cualquiera de los siguientes debería funcionar. Todos estos consultan DNS directamente e ignoran otros medios de resolución:

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

Si solo desea imprimir una IP, agregue el exit comando a awk flujo de trabajo.

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. ¿Cómo depurar un script Bash?

  2. Cómo dividir una cadena en Bash Script

  3. Bash Script - Cómo leer la entrada del usuario

  4. ¿Cómo ejecutar un script de shell en una consola Unix o terminal Mac?

  5. ¿Cómo resaltar los scripts de Bash en Vim?

Cómo ejecutar un script Bash {7 métodos}

Cómo escribir un script Bash con ejemplos

Cómo configurar la dirección IP estática en Linux y Unix

Cómo ejecutar un script Bash

¿Cómo verifico la sintaxis de un script Bash sin ejecutarlo?

¿Cómo puedo resolver un nombre de host en una dirección IP en un script Bash?