Sto eseguendo Ubuntu 14.04 sul servizio cloud della mia azienda (la mia istanza ha un IP elastico). Voglio controllare lindirizzo IP della mia istanza che sto eseguendo dalla riga di comando, ma non ha funzionato.
root@ubuntu14-graphite:~# hostname ubuntu14-graphite root@ubuntu14-graphite:~# hostname -i hostname: Name or service not known
Non capisco il motivo.
Ho provato a eseguire il ping a ubuntu14-graphite ma diceva:
unknown host ubuntu14-graphite.
Significa che il mio host non “t esisti?
Ho un altro server (non unistanza cloud ma un server fisico). In questo server ho installato CentOS 6.7. Ho controllato lIP del nome host e ha funzionato anche se non cera niente di speciale in /etc/hosts
.
Ecco loutput di cat /etc/hosts
:
127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
Risposta
Significa che “il system “(sto usando questo termine in un senso ampio, generale, ambiguo)” non sa che il nome ubuntu14-graphite
corrisponde al tuo host e al suo indirizzo IP. (Il fatto che sia il tuo host “s name non è” t abbastanza per farlo accadere .) Questo significa quasi sicuramente che non hai una riga per ubuntu14-graphite
nel tuo /etc/hosts
file † e che non è nel tuo servizio di denominazione (ad esempio, DNS o NIS). Di conseguenza, un modo per risolverlo è aggiungere ubuntu14-graphite
(e il relativo indirizzo IP) al tuo /etc/hosts
. Se stai utilizzando un sistema di denominazione più sofisticato (distribuito) come DNS o NIS (o forse ActiveDirectory?), La soluzione definitiva è aggiungere il tuo host a quel servizio.
_____________
† … e vedo dal tuo post del tuo file hosts che è così.
Cè qualche dibattito sulla questione di quale indirizzo IP dovresti associare al tuo nome host . Tutti concordano sul fatto che dovrebbe essere un indirizzo che “funziona” per il tuo host; ad esempio, comandi come ping A.B.C.D
dovrebbero avere successo. Alcune persone consigliano di utilizzare un indirizzo di loopback. Gli indirizzi di loopback sono sempre dei form 127 .BCD ; i valori comuni sono 127.0.0.1 e 127.0.1.1. Altre persone consigliano di utilizzare un indirizzo LAN, che potrebbe essere 192.168 .CD (ma può essere quasi tutto) – ma non dovresti inserire un indirizzo assegnato dinamicamente nel tuo file hosts (e, se stai usando DHCP con DNS, allora gli indirizzi assegnati dinamicamente dovrebbero essere inseriti nei tuoi record DNS automaticamente). Utilizza comandi come ifconfig
e hostname -I
per vedere quali indirizzi sono in uso.
Commenti
Risposta
Il modo effettivo per controllare lindirizzo IP di una macchina è utilizzare il comando ifconfig
.
Tieni presente che, a seconda della configurazione cloud effettiva, listanza del server potrebbe non essere a conoscenza dellIP pubblico e conosce solo un IP VLAN. Per i dettagli su questo, è necessario fare riferimento alla documentazione del provider.
Commenti
- No;
ip a s
. Vedi serverfault.com/q/458628/89813 – ifconfig è deprecato su Linux.
Risposta
Aggiungi la myhostname
voce al servizio hosts
in /etc/nsswitch.conf
.
In altre parole, cambia questa riga in /etc/nsswitch.conf
:
hosts: files dns
in questo:
hosts: files dns myhostname
Dove di solito i nomi host vengono risolti utilizzando il file /etc/hosts
e dns, il nome host del sistema può anche essere risolto dicendo a Switch del servizio nomi di farlo (come farà questa modifica alla configurazione).
Questo spiegherebbe perché “non hai visto niente di speciale nel /etc/hosts
sul sistema che potresti risolvere il nome host locale.
Ulteriori informazioni sul flag myhostname
sono qui .
Risposta
Secondo me dipende dalla versione del comando hostname (pacchetto net-tools).
Vedi: https://bugzilla.redhat.com/show_bug.cgi?id=319981
- esempio su ” openSuse Leap 42.3 “:
# hostname -V net-tools 1.60 hostname 1.100 (2001-04-14) # hostname -i hostname: Name or service not known
- su Lubuntu 17.10
$ hostname -V hostname 3.18
hostname -i
– mi fornisce informazioni su IPv6 e IPv4
Commenti
- La segnalazione di bug riguarda
hostname -s
, nonhostname -i
. Questo non è correlato alle versioni dihostname
, è correlato al fatto che il nome host fornito dahostname
sia risolvibile.
Risposta
Se il problema non viene ancora risolto nonostante lapplicazione delle soluzioni alternative precedenti:
Prova a rimuovere la parte
http://
dallURL nel tuo comandotelnet
come mostrato di seguito:
Invece di utilizzare:
telnet http://website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80
Prova questo:
telnet website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80
Risposta
Vai a etc / hosts.save controlla il tuo hostname lì. Quindi modifica /etc/hosts
per scrivere il tuo nome host e il nome host in hosts.save
. Controlla anche lindirizzo IP. Esempio:
127.0.0.1 ubuntu 127.0.1.1 ubuntu.ubuntu-domain ubuntu
Commenti
- Impostazione di un IP localhost in
/etc/hosts
non fornirà loro lindirizzo IP effettivo. Inoltre non riesco a capire perché ‘ stai anche guardando/etc/hosts.save
che è un tecnicismo e molto irrilevante.
hostname
in modo diverso dai sistemi basati su RH..put127.0.1.1 ubuntu14-graphite
nel file/etc/hosts
e controlla..note, il suo127.0.1.1
, non127.0.0.1
(che puoi comunque conservare solo per localhost, poiché127.0.0.0/8
è un blocco di loopback puoi utilizzare qualsiasi indirizzo sebbene alcuni sistemi abbiano indirizzi limitati predefiniti)