(copiado de una de mis respuestas en SF )
El hostname
comando devuelve resultados de DNS y /etc/hosts
.
hostname
es equivalente uname -n
y es el "nombre de host" o "nombre de nodo " real de la caja.
Todos los otros hostname
argumentos usan este nombre para buscar información.
Entonces, antes de continuar, debería explicar el /etc/hosts
formato 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.conf
este método, variará.
- Si lo tiene configurado para usar dns, usará los dominios de búsqueda configurados
/etc/resolv.conf
hasta que recupere una IP del DNS.
- Si lo tiene configurado para usar archivos, buscará
/etc/hosts
una 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 -a
solo 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/hosts
que contenga su nombre de host ( uname -n
).
Ejemplos
Si su nombre de nodo es 'foobar', y tiene una entrada /etc/hosts
como 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