La commande linux hostname -f ne fonctionne pas sur RHEL

13

J'utilise un RHEL 5.7 et la hostnamecommande me donne le nom d'hôte correct.
Mais hostname -set hostname -fretour: Unknown host. Pourquoi?

redoc
la source
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é?
redoc

Réponses:

21

(copié d' une de mes réponses sur SF )

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:

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
Patrick
la source
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.
qwertzguy