Quelle distribution? Sur mon système Ubuntu 12.04, les 3 fonctionnent.
Anthon
Quel système d'exploitation utilisez-vous? Si Linux, quelle distribution? Quel est le contenu de /etc/hostname?
terdon
1
hostname -futilise DNS, avez-vous une entrée DNS inversée pour votre IP?
Barmar
@terdon J'utilise RHEL5 (serveur Red Hat Enterprise Linux version 5.7 (tikanga)) et il n'y a pas un tel fichier (/ etc / hostname)
redoc
@Barmar Je n'ai pas le DNS configuré sur mon hôte. J'ai ajouté l'adresse IP et le fqdn dans mon fichier d'hôtes (/ etc / hosts), cette erreur est-elle due au fait que le DNS n'est pas configuré?
La hostnamecommande renvoie les résultats de DNS et /etc/hosts.
hostnameest équivalent à uname -net est le "nom d'hôte" ou "nom de noeud " réel de la boîte.
Tous les autres hostnamearguments utilisent ce nom de nœud pour rechercher des informations.
Donc, avant d'aller plus loin, je devrais expliquer le /etc/hostsformat 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 -fil 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.confcette méthode, cela peut varier.
Si vous l'avez configuré pour utiliser DNS, il utilisera les domaines de recherche configurés /etc/resolv.confjusqu'à ce qu'il récupère une IP du DNS.
Si vous l'avez configuré pour utiliser des fichiers, il recherchera /etc/hostsune 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 -ane 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/hostscontenant votre nom d'hôte ( uname -n).
Exemples
Si votre nom de nœud est 'foobar' et que vous avez une entrée /etc/hostscomme celle-ci:
Cette explication de la façon dont il obtient la valeur est excellente! J'avais mon nom de domaine complet à la fin de la ligne 127.0.0.1 qui avait comme nom d'hôte principal localhost. Je viens de les supprimer et de laisser le FQDN uniquement sur la ligne qui a la véritable IP, et cela a résolu mon problème de nom d'hôte -f renvoyant localhost.
/etc/hostname
?hostname -f
utilise DNS, avez-vous une entrée DNS inversée pour votre IP?Réponses:
(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 avezhosts:
configuré l' entrée configurée dans/etc/nsswitch.conf
cette méthode, cela peut varier./etc/resolv.conf
jusqu'à ce qu'il récupère une IP du DNS./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:Ensuite, vous obtiendrez les résultats de commande suivants:
la source