Estou executando o Ubuntu 14.04 no serviço de nuvem da minha empresa (minha instância tem IP elástico). Quero verificar o endereço IP da minha instância que estou executando pela linha de comando, mas não funcionou.
root@ubuntu14-graphite:~# hostname ubuntu14-graphite root@ubuntu14-graphite:~# hostname -i hostname: Name or service not known
Não entendo o motivo.
Eu tentei fazer ping para ubuntu14-graphite, mas ele disse:
unknown host ubuntu14-graphite.
Isso significa que meu host não ainda existe?
Eu tenho outro servidor (não instância de nuvem, mas servidor físico). Neste servidor instalei o CentOS 6.7. Eu verifiquei o IP do nome do host e funcionou, embora não houvesse nada de especial em /etc/hosts
.
Aqui está a saída de 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
Resposta
Significa que “o sistema “(estou usando esse termo em um sentido amplo, geral e ambíguo) não sabe que o nome ubuntu14-graphite
corresponde ao seu host e seu endereço IP. (O fato de que seu host “s nome não é o suficiente para que isso aconteça .) Isso quase certamente significa que você não tem uma linha para ubuntu14-graphite
em seu /etc/hosts
arquivo † , e que não está em seu serviço de nomes (por exemplo, DNS ou NIS). Consequentemente, uma maneira de corrigir isso é adicionar ubuntu14-graphite
(e seu endereço IP) ao seu /etc/hosts
. Se você estiver usando um sistema de nomenclatura mais sofisticado (distribuído), como DNS ou NIS (ou talvez ActiveDirectory?), A solução definitiva é adicionar seu host a esse serviço.
_____________
† … e vejo pela sua postagem do arquivo hosts que este é o caso.
Há algum debate sobre a questão de qual endereço IP você deve associar ao seu nome de host . Todos concordam que deve ser um endereço que “funciona” para o seu host; ou seja, comandos como ping A.B.C.D
devem funcionar. Algumas pessoas recomendam o uso de um endereço de loopback. Os endereços de loopback são sempre do formulário 127 .BCD ; os valores comuns são 127.0.0.1 e 127.0.1.1. Outras pessoas recomendam usar um endereço LAN, que pode ser semelhante a 192.168 .CD (mas pode ser quase nada) – mas você não deve colocar um endereço atribuído dinamicamente em seu arquivo de hosts (e, se você estiver usando DHCP com DNS, então o (s) endereço (s) atribuído (s) dinamicamente (s) devem ser inseridos em seus registros DNS automaticamente). Use comandos como ifconfig
e hostname -I
para ver quais endereços estão em uso.
Comentários
Resposta
A maneira real de verificar o endereço IP de uma máquina é usando o comando ifconfig
.
Observe que, dependendo da configuração real da nuvem, a instância do servidor pode não esteja ciente do IP público e conheça apenas um IP VLAN. Para obter detalhes sobre isso, consulte a documentação do seu provedor.
Comentários
- Não;
ip a s
. Consulte serverfault.com/q/458628/89813 – ifconfig está obsoleto no Linux.
Resposta
Adicione a entrada myhostname
ao serviço hosts
em /etc/nsswitch.conf
.
Em outras palavras, altere esta linha em /etc/nsswitch.conf
:
hosts: files dns
para isto:
hosts: files dns myhostname
Onde geralmente os nomes de host são resolvidos usando o arquivo /etc/hosts
e dns, o nome de host do sistema também pode ser resolvido dizendo ao switch de serviço de nomes para fazer isso (como essa alteração de configuração fará).
Isso explicaria por que você não viu nada de especial sobre o /etc/hosts
arquivo no sistema que você pode resolver o nome do host local.
Mais informações sobre o sinalizador myhostname
é aqui .
Resposta
Na minha opinião, depende da versão do comando hostname (pacote net-tools).
Veja: https://bugzilla.redhat.com/show_bug.cgi?id=319981
- exemplo em ” openSuse Leap 42.3 “:
# hostname -V net-tools 1.60 hostname 1.100 (2001-04-14) # hostname -i hostname: Name or service not known
- no Lubuntu 17.10
$ hostname -V hostname 3.18
hostname -i
– me dá informações sobre IPv6 e IPv4
Comentários
- Esse relatório de bug é sobre
hostname -s
, nãohostname -i
. Isso não está relacionado às versões dehostname
, mas sim se o nome do host fornecido porhostname
pode ser resolvido.
Resposta
Se o problema ainda não foi resolvido apesar da aplicação das soluções alternativas acima:
Tente remover
http://
parte do url em seutelnet
comando conforme mostrado abaixo:
Em vez de usar:
telnet http://website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80
Tente isto:
telnet website.lab7-2533586.ch-geni-net.instageni.colorado.edu 80
Resposta
Vá para etc / hosts.save e verifique o seu nome de host. E então edite /etc/hosts
para escrever lá o seu nome de host e o nome de host em hosts.save
. Verifique também o endereço IP. Exemplo:
127.0.0.1 ubuntu 127.0.1.1 ubuntu.ubuntu-domain ubuntu
Comentários
- Definir um IP de host local em
/etc/hosts
não fornecerá o endereço IP real. Também não consigo ver por que você ‘ também está olhando para/etc/hosts.save
, que é um detalhe técnico e muito irrelevante.
hostname
de maneira diferente que os sistemas baseados em RH..put127.0.1.1 ubuntu14-graphite
no/etc/hosts
arquivo e verifique .. note, seu127.0.1.1
, não127.0.0.1
(que você pode preservar de qualquer maneira apenas para localhost, como127.0.0.0/8
é um bloco de loopback, você pode usar qualquer endereço, embora alguns sistemas tenham endereços restritos predefinidos)