El comando linux hostname -f no funciona en RHEL


13

Estoy ejecutando un RHEL 5.7 y el hostnamecomando me da el nombre de host correcto.
Pero hostname -sy hostname -fvolver: Unknown host. ¿Por qué?


¿Qué distribución? En mi sistema Ubuntu 12.04, los 3 funcionan.
Anthon

Qué sistema operativo estás usando? Si es Linux, ¿qué distribución? ¿Cuáles son los contenidos de /etc/hostname?
terdon

1
hostname -fusa DNS, ¿tiene una entrada de DNS inversa para su IP?
Barmar

@terdon Estoy usando RHEL5 (red hat enterprise linux server versión 5.7 (tikanga)) y no existe dicho archivo (/ etc / hostname)
redoc

@Barmar No tengo el dns configurado en mi host. Agregué la dirección IP y fqdn en mi archivo de hosts (/ etc / hosts), ¿este error es resultado de que no se configuró dns?
redoc

Respuestas:


21

(copiado de una de mis respuestas en SF )

El hostnamecomando devuelve resultados de DNS y /etc/hosts.

hostnamees equivalente uname -ny es el "nombre de host" o "nombre de nodo " real de la caja.
Todos los otros hostnameargumentos usan este nombre para buscar información.

Entonces, antes de continuar, debería explicar el /etc/hostsformato del archivo.
El primer campo es bastante obvio, es la dirección IP que todos los nombres de host en la línea deben resolver. El segundo campo es el nombre de host principal para esa IP. Los campos restantes son alias.

Entonces, si lo ejecuta hostname -f, primero intentará resolver la IP para su nombre de nodo. Dependiendo de cómo tenga hosts:configurada la entrada en /etc/nsswitch.confeste método, variará.

  • Si lo tiene configurado para usar dns, usará los dominios de búsqueda configurados /etc/resolv.confhasta que recupere una IP del DNS.
  • Si lo tiene configurado para usar archivos, buscará /etc/hostsuna línea donde el nombre de host principal o el nombre de alias es su nombre de nodo actual ( uname -n), y luego devolverá la dirección IP en esa línea.

Una vez que tenga la IP, intentará una búsqueda inversa en esa IP. Nuevamente usará DNS para esto y su archivo de hosts basado en su nsswitch.conf. En el caso de usar su archivo de hosts, devolverá la entrada principal (que es el primer campo después de la IP en el archivo).

hostname -asolo funcionará con el archivo de hosts, ya que realizar una búsqueda inversa en DNS solo le da 1 resultado. Con el archivo de hosts, devuelve los alises en la línea correspondiente (que es todo después de la primera entrada, el nombre de host principal).

 

En resumen, la razón probable de su problema es que no tiene ninguna entrada /etc/hostsque contenga su nombre de host ( uname -n).


Ejemplos
Si su nombre de nodo es 'foobar', y tiene una entrada /etc/hostscomo esta:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

Entonces obtendrá los siguientes resultados de comando:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost

¡Esa explicación de cómo obtiene el valor es genial! Tenía mi FQDN al final de la línea 127.0.0.1 que tenía como nombre de host principal localhost. Simplemente los eliminé y dejé el FQDN solo en la línea que tiene la IP real, y solucionó mi problema de hostname -f return localhost.
qwertzguy
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.