A las utilidades les gusta host
y le dig
permiten ver la dirección IP correspondiente al nombre del host.
También existe la getent
utilidad que se puede utilizar para consultar /etc/hosts
u otras bases de datos NSS.
Estoy buscando una utilidad estándar conveniente (que está disponible en Debian, por ejemplo) que resuelve un nombre de host independientemente de dónde esté definido.
Debería ser más o menos equivalente a
ping "$HOST" | head -1 | perl -lne '/\((.*?)\)/ && print $1'
getent
?getent
también se ve en DNS (pensé que solo se ve en/etc/hosts
). Ahora que lo he probado, esto es lo que está malgetent
: porquegoogle.com
, devuelve una sola dirección, y esa dirección es IPv6. Lo que no es útil, ya que estoy en una red IPv4, y mi comando realmente imprimiría una dirección IPv4.Respuestas:
El único comando que sé que hace lo que quieres es resolveip:
http://linux.die.net/man/1/resolveip
Sin embargo, solo viene con mysql-server, que puede no ser ideal para instalar en todas partes.
fuente
Si el problema es que no desea resolver estos nombres usando ipv6, simplemente solicite a getent que use solo ipv4. Esto enumerará todas las direcciones ipv4:
fuente
ahostsv6
.getent ahosts google.com
.La cuestión es que hay varias API para resolver nombres de host
gethostbyname
,getaddrinfo
yinet_pton
algunas de ellas pueden devolver más de una dirección y / o puede consultar el tipo de dirección que desee.Si desea una forma portátil de obtener una dirección IPv4, entonces tal vez:
fuente
(Esta respuesta solo se aplica si eres root en la máquina).
Esto también me molestaba, y luego estandaricé la ejecución de dnsmasq en todas mis máquinas. Dnsmasq es un caché de DNS ligero. Como beneficio adicional, sirve el contenido de
/etc/hosts
más de DNS.fuente
gethostip -d name.domain
delsyslinux
paquete en Ubuntu (y probablemente Debian).-d
salidas formato decimal.fuente
Utilicé mi conocimiento puro de perl e hice un pequeño script con manejo de errores:
/ usr / local / bin / gethostip:
Gracias a Stéphane Chazelas por la idea inicial
fuente