(copié d' une de mes réponses sur SF )
La hostname
commande renvoie les résultats de DNS et /etc/hosts
.
hostname
est équivalent à uname -n
et est le "nom d'hôte" ou "nom de noeud " réel de la boîte.
Tous les autres hostname
arguments utilisent ce nom de nœud pour rechercher des informations.
Donc, avant d'aller plus loin, je devrais expliquer le /etc/hosts
format du fichier.
Le premier champ est assez évident, c'est l'adresse IP à laquelle tous les noms d'hôtes sur la ligne doivent se résoudre. Le deuxième champ est le nom d'hôte principal pour cette IP. Les champs restants sont des alias.
Donc, si vous l'exécutez, hostname -f
il essaiera d'abord de résoudre l'IP de votre nom de nœud. Selon la façon dont vous avez hosts:
configuré l' entrée configurée dans /etc/nsswitch.conf
cette méthode, cela peut varier.
- Si vous l'avez configuré pour utiliser DNS, il utilisera les domaines de recherche configurés
/etc/resolv.conf
jusqu'à ce qu'il récupère une IP du DNS.
- Si vous l'avez configuré pour utiliser des fichiers, il recherchera
/etc/hosts
une ligne où le nom d'hôte principal ou le nom d'alias est votre nom de nœud actuel ( uname -n
), puis renverra l'adresse IP dans cette ligne.
Une fois qu'il a l'IP, il essaiera alors une recherche inversée sur cette IP. Encore une fois, il utilisera DNS pour cela et votre fichier d'hôtes en fonction de votre nsswitch.conf
. Dans le cas de l'utilisation de votre fichier d'hôtes, il renverra l'entrée principale (qui est le premier champ après l'IP dans le fichier).
hostname -a
ne fonctionnera qu'avec le fichier hosts, car une recherche inversée dans DNS ne vous donne qu'un résultat. Avec le fichier hosts, il renvoie les alises dans la ligne correspondante (qui est tout après la première entrée, le nom d'hôte principal).
En bref, la raison probable de votre problème est que vous n'avez aucune entrée /etc/hosts
contenant votre nom d'hôte ( uname -n
).
Exemples
Si votre nom de nœud est 'foobar' et que vous avez une entrée /etc/hosts
comme celle-ci:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
Ensuite, vous obtiendrez les résultats de commande suivants:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost