comando linux hostname -f non funziona su RHEL


13

Sto eseguendo un RHEL 5.7 e il hostnamecomando mi dà il nome host corretto.
Ma hostname -se hostname -fritorno: Unknown host. Perché?


Quale distro? Sul mio sistema Ubuntu 12.04 funzionano tutti e 3.
Anthon,

Quale sistema operativo stai usando? Se Linux, quale distribuzione? Quali sono i contenuti di /etc/hostname?
terdon

1
hostname -fusa DNS, hai una voce DNS inversa per il tuo IP?
Barmar,

@terdon sto usando RHEL5 (red hat enterprise linux server versione 5.7 (tikanga)) e non esiste tale file (/ etc / hostname)
redoc

@Barmar Non ho il DNS configurato sul mio host. Ho aggiunto l'indirizzo IP e fqdn nel mio file hosts (/ etc / hosts), questo errore è il risultato della mancata configurazione del DNS?
redoc

Risposte:


21

(copiato da una delle mie risposte su SF )

Il hostnamecomando restituisce risultati da DNS e /etc/hosts.

hostnameè equivalente a uname -ned è l'attuale "nomehost" o "nodename" della casella.
Tutti gli altri hostnameargomenti usano questo nodename per cercare informazioni.

Quindi, prima di andare oltre, dovrei spiegare il /etc/hostsformato del file.
Il primo campo è abbastanza ovvio, è l'indirizzo IP a cui dovrebbero risolvere tutti i nomi host sulla linea. Il secondo campo è il nome host principale per quell'IP. I campi rimanenti sono alias.

Quindi, se lo esegui hostname -f, tenterà innanzitutto di risolvere l'IP per il tuo nome nodo. A seconda di come è stata hosts:configurata la voce in /etc/nsswitch.confquesto metodo può variare.

  • Se lo hai configurato per utilizzare DNS, utilizzerà i domini di ricerca configurati /etc/resolv.conffino a quando non ottiene un IP dal DNS.
  • Se è stato configurato per utilizzare i file, cercherà /etc/hostsuna riga in cui il nome host primario o il nome alias corrisponde al nome nodo corrente ( uname -n), quindi restituisce l'indirizzo IP in quella riga.

Una volta che ha l'IP, proverà quindi una ricerca inversa su quell'IP. Anche in questo caso utilizzerà DNS per questo e il tuo file hosts in base al tuo nsswitch.conf. Nel caso di utilizzo del file hosts, verrà restituita la voce principale (che è il primo campo dopo l'IP nel file).

hostname -afunzionerà solo con il file hosts poiché fare una ricerca inversa in DNS ti dà solo 1 risultato. Con il file hosts restituisce gli alise nella riga corrispondente (che è tutto dopo la prima voce, il nome host primario).

 

Quindi in breve, il probabile motivo del tuo problema è che non hai alcuna voce /etc/hostsche contenga il tuo hostname ( uname -n).


Esempi
Se il tuo nodename è 'foobar' e hai una voce /etc/hostscome questa:

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

Quindi otterrai i seguenti risultati di comando:

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost

Questa spiegazione di come ottiene il valore è fantastica! Avevo il mio nome di dominio completo alla fine della riga 127.0.0.1 che aveva come nome host primario localhost. Li ho appena cancellati e ho lasciato il nome di dominio completo solo sulla linea che ha l'IP reale, e risolto il mio problema di nome host -f restituendo localhost.
qwertzguy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.