¿Cómo obtener el nombre de host junto con el nombre de dominio?


18

En unix (Solaris), ¿hay algún comando que devuelva el nombre de host y el nombre de dominio juntos?

Por ejemplo:

hostname -> servername
domainname -> us.xyz.com

Necesito : servername.us.xyz.com


2
No printf "%s" "$(hostname) $(domainname)"funciona
jasonwryan

trate de usar "hostname -f", eso será suficiente, espero que sí
abhishek kumar srivastava

Respuestas:


14

Esto funcionará si su dominio está configurado correctamente en resolv.conf. También puede usar el comando domainname que los otros han mencionado si su nombre de dominio NIS es el mismo que su dominio DNS.

echo `uname -n`.`awk '/^domain/ {print $2}' /etc/resolv.conf`

13

El comando

hostname --fqdn (or -f)

también podría hacer lo que quiera o no, ya que en mi sistema obtengo (none)cuando ejecutodomainname


8
Según la página de manual de hostname(1)Solaris 10 (en sun4v) y todas las versiones anteriores que he usado, --fqdnno está disponible. Solo intenta establecer el nombre de host en --fqdn. Si lo ejecuta como un no superusuario por seguridad, dice 'uname: error en la configuración del nombre: No propietario'. Obviamente, este es el stock de Solaris hostname. El póster no indica si tienen o no el conjunto de herramientas GNU instalado.
Alexios

5

Este también me ha estado molestando durante años. Solo trabajo alrededor diciendo

$(hostname).$(domainname)

Podría definir una función de shell o alias:

fqdn () {
    echo $(hostname).$(domainname)
}

44
domainnnameen realidad informa tu dominio NIS si estás ejecutando NIS. Esto no es necesariamente lo mismo que su nombre de dominio DNS.
Magellan

No lo es. Pero como he logrado evadir / evitar NIS ya que eran Páginas Amarillas, nunca lo supe. :) Entonces, ¿ hay una manera confiable de obtener el nombre de dominio si el NIS es diferente?
Alexios

Deberías sentirte bendecido de haber evitado NIS. Es molesto. E incluso el equipo de Mozilla Thunderbird lo arruinó, ya que dependían de la salida del 'nombre de dominio' para la respuesta predeterminada en 2.0. Para el nombre de dominio real, usohostname --fqdn | cut -d. -f2-4
Magellan

1
Esto funciona bien en Linux. En Solaris, al menos hasta 10, hostname --fqdn establece el nombre de host en '--fqdn', lo que probablemente sea una mala idea (así que asegúrese de no ser root si lo intenta). :) ¿Es --fqdncompatible con Solaris 11?
Alexios

1
Oy! Inadvertidamente establecer el nombre de host sería un dolor, y el OP dijo Solaris. ¡Gracias!
Magallanes

4

check-hostname | awk '{print $ NF}'


2
Por favor explique un poco para los no expertos.
vonbrand

Sinopsis / usr / sbin / check-hostname Descripción El script check-hostname es una ayuda para la migración de sendmail (1M). Este script intenta determinar el nombre de host completo (FQHN) del host local de manera similar a sendmail (1M). Si check-hostname es capaz de determinar el FQHN del host local, informará de éxito. De lo contrario, check-hostname informa cómo reconfigurar el sistema para que FQHN se pueda determinar correctamente.
ealgumby

/ usr / sbin / check-hostname informará el FQDN, si está definido, en los sistemas Solaris. Canalizar la salida a awk y usar print $ NF solo informa el último campo de salida de check-hostname, que es el FQDN. Este es el método más directo que conozco para obtener esta información desde la línea de comandos, suponiendo que tenga un nombre de dominio completo. Si no, entonces esto no funcionará, pero no sentí la necesidad de mostrar eso, ya que en ese caso el nombre de host es todo lo que tienes. Si no está utilizando Solaris, esto tampoco funcionará, pero la consulta se dirigió a Solaris.
ealgumby

En serio, no entiendo cómo esto no responde la pregunta, que era: "En Unix (Solaris) ¿hay algún comando que devuelva el nombre de host y el nombre de dominio juntos?" La respuesta es "sí", y ese comando es: check-hostname | awk '{print $ NF}'
ealgumby

3
La verdadera respuesta está en tus comentarios. Dar un comando de una línea con poca (o en su caso, ninguna) explicación no es el tipo de respuesta que trata este sitio web.
rahmu

2

Sé que este es un hilo antiguo, pero tenía la necesidad de extraer el nombre de host y el nombre de dominio por separado en un script.

La respuesta de ealgumby al uso de check-hostname fue algo que nunca había visto antes, así que lo intenté con gran éxito para mis necesidades. Lo marcaría como útil, pero aparentemente no tengo el representante para hacerlo.

Configuré el dominio de la siguiente manera recorriendo la salida de check-hostname.

domain=`check-hostname | nawk -F\. '{for(i=2; i<NF;i++){printf $i"."}printf $NF"\n"}'`
fqdn=`hostname`'.'${domain}

1

He hecho una pequeña solución para hostnamey host:

$ host $(hostname -i) | awk '{print $NF }'

(Estoy usando Centos pero debería funcionar en otro lugar)

Obtener el dominio sin punto final:

$ host $(hostname -i) | awk '{print substr($NF, 1, length($NF)-1)}'

en mi ubuntu, hostname -iimprima la dirección IP correspondiente al nombre de host.
Archemar

Sí, así es, así que paso esta IP al host comando. Esto te dará algo como esto: YOUR_IP.in-addr.arpa domain name pointer hostname.domainname. con awk obtengo la última columna que eshostname.domainname
user1314742

Ya veo, desafortunadamente el uso de host $(hostname -i)darme una lista de 8 nombres de host, todos con la misma IP, y ningún nombre de host correspondiente a mis hosts
Archemar

¿estás seguro de que no tienes ningún alias para el hostcomando? parece que su comando hosttiene un alias parahost -a
user1314742

0

En Solaris esto funcionó bien para mí: perdón por el backtick, es la cita invertida junto al número 1 en un teclado qwerty o puede usar $ (comando) en KSH

getent hosts (backtick) /usr/bin/hostname (backtick)

o

getent hosts $(/usr/bin/hostname)

ejemplo:

root@melauto:[/]# getent hosts $(/usr/bin/hostname)

10.4.19.241     melauto.sro.vic.gov.au melauto loghost
root@melauto:[/]# 

getent consulta el mecanismo de búsqueda de nombre actual como se especifica en /etc/nsswitch.conf y devuelve la información que coincide con la búsqueda, aquí devuelve la información como se encuentra en /etc/hosts. si busca la información de host para otro host que no está en /etc/hosts, se buscará en DNS siempre que sea lo que se define en/etc/nsswitch.conf


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.