Como mudar o nome do host no CentOS 6.5?

48

Não consigo mudar o nome do host no meu host do CentOS 6.5. Estou seguindo as instruções que encontrei aqui: http://www.rackspace.com/knowledge_center/article/centos-hostname-change

Eu coloco meu /etc/hostsjeito assim ...

    [root@mig-dev-006 ~]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain 
    192.168.32.128  ost-dev-00.domain.com ost-dev-00
    192.168.32.129  ost-dev-01.domain.com ost-dev-01

... então eu faço o meu /etc/sysconfig/networkarquivo assim ...

    [root@mig-dev-006 ~]# cat /etc/sysconfig/network
    NETWORKING=yes
    HOSTNAME=ost-dev-00.domain.com
    NTPSERVERARGS=iburst

... então eu corro hostnameassim ...

    [root@mig-dev-006 ~]# hostname ost-dev-00.domain.com

... e então eu corro bash e tudo parece bem ...

    [root@mig-dev-006 ~]# bash

... mas quando eu reinicio minha rede, o antigo nome do host volta:

    [root@ost-dev-00 ~]# /etc/init.d/network restart
    Shutting down interface eth0:  Device state: 3 (disconnected)
                                                               [  OK  ]
    Shutting down loopback interface:                          [  OK  ]
    Bringing up loopback interface:                            [  OK  ]
    Bringing up interface eth0:  Active connection state: activating
    Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/6
    state: activated
    Connection activated
                                                               [  OK  ]
    [root@ost-dev-00 ~]# bash
    [root@mig-dev-006 ~]# 

... Eu não consigo descobrir. O que eu estou fazendo errado aqui.

Grilo vermelho
fonte
11
Você editou seu /etc/hostnamearquivo?
Anthon
Não há um /etc/hostnamearquivo. [root@smp-mig-dev-006 ~]# ls -l /etc/hostnamesaídasls: cannot access /etc/hostname: No such file or directory
Red Cricket
Pode ser uma coisa dos Centos. O que sua página de manual diz sobre a permanência de hostname somenameum efeito duradouro? (se não, por que você fazer esse apelo?)
Anthon
3
Eu acho que /etc/hostnameestá na CentOS 7, mas não no CentOS 6
Pavel Šimerda
Sei que isso é antigo, mas sinto o NetworkManager no trabalho, isso ou você pode ter HOSTNAME = definido em outro arquivo que não a rede (ou seja, em scripts de rede). O arquivo / etc / hostname não é usado no CentOS 6 (é algo do systemd; isso significa CentOS 7 e superior). Verifique o conteúdo do arquivo / etc / sysconfig / network-scripts / ifcfg-eth0; o que tem nele? Nota: Se você observar o script if_post do Redhat em network-scripts /, verá que set_hostname simplesmente executa "hostname $ HOSTNAME", em que HOSTNAME é uma variável do shell configurada no arquivo de rede ou no arquivo ifcfg-eth0.
Mike S

Respostas:

67

para alterar o nome do host permanentemente, é necessário alterá-lo em dois lugares:

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=newHostName

e: uma boa idéia se você tiver algum aplicativo que precise resolver o IP do nome do host)

vi /etc/hosts 
127.0.0.1 newHostName
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

e depois

 rebooting the system
Networker
fonte
7
No final deste duas mudanças acrescentar hostname newHostName, não é necessário reiniciar eu acho
Edakos
4
A edição do arquivo / etc / hosts não parece ser necessária
jgritty
2
A resposta foi aceita, mas primeiro, a /etc/hostsalteração existe apenas para tornar o nome do host resolvível, não para alterá-lo e com /etc/sysconfig/networka mesma aparência do OP. Alguém pode explicar o que exatamente o OP precisava mudar para fazê-lo funcionar?
Pavel Šimerda 4/15
3
Eu acho que uma resposta correta deve funcionar como uma resposta para a pergunta. A repetição dos dados da pergunta é boa desde que a resposta diga que o OP o configurou corretamente, mas não executou as ações necessárias para carregar a nova configuração (por exemplo, reinicialização).
Pavel Šimerda
2
Reinicialização não necessária. Verifique strace -f nome do host blá. O kernel recebe a mensagem imediatamente. / etc / hosts não afeta o nome do host do host, no CentOS 6.5 (e 7) pelo menos. E essa resposta está incorreta, pois está faltando o comando hostname, que é o que informa o kernel do nome do host.
Mike S
65

Uma solução para o CentOS 7 pode ser encontrada aqui :

hostnamectl set-hostname <new hostname>
Steffen Kanster
fonte
3
"hostnamectl" era a única solução de trabalho para mim no CentOS Linux, versão 7.2.1511
AJN
..e reinicie, no meu caso.
WesternGun 4/0118
Eu não acho que você precisa reiniciar apenas relogging no devem trabalhar
FearlessHyena
5
A questão é sobre o CentOS 6.5. O CentOS 7 é um animal completamente diferente e esta resposta não pertence a este lugar.
Harald
15

Você pode alterar seu nome de host com um único comando.

  • Comando: hostname- isso exibe o nome do host antigo
  • Comando: hostname <new name>-este define novo nome de host

Exemplo

$ hostname mynewhost

Para persistir o novo nome de host durante a reinicialização

edite o arquivo / etc / sysconfig / network para se parecer com abaixo

NETWORKING=yes
HOSTNAME=myhostanme

Para ajuda em vídeo

Vishwanath gowda k
fonte
Eu acredito que esta é a resposta mais correta. Vale acrescentar que está sendo executado: man hostname; mostra mais opções para definir bonita, transitória, estática etc.
ekerner
Eu acho que não basta ser persistente na reinicialização. Você também precisa modificar o arquivo / etc / sysconfig / network.
Pozinux
6

Além das respostas já fornecidas para o CentOS 6.5,

O CentOS 7 também possui uma ferramenta de interface de usuário baseada em texto para alterar o nome do host ( e outras configurações de rede ), parte do Network Manager:

nmtui

inicia esta interface do usuário:

insira a descrição da imagem aqui

que tem uma opção para Set system hostname.

A interface de usuário de texto do NetworkManager é instalada por padrão na imagem do CentOS-7-x86_64-DVD-1511.iso, instalação básica. Se o seu não tiver, você pode instalá-lo com o seguinte comando:

yum install NetworkManager-tui
quase
fonte
2

Eu tive que fazer isso por várias máquinas. Aqui está um script python simples para ajudá-lo. Basta fornecer o nome do novo host como o primeiro argumento para o script.

por exemplo: se você nomear o script changeHost.py, execute-o como

changeHost.py [NewHostName]

onde NewHostName é o nome do host desejado.

Certifique-se também de executar este script como root.



#!/usr/bin/env python
import os

from sys import argv
script, newHostName = argv

print "Modifying network file..."
target = open("/etc/sysconfig/network","w")
target.truncate()
target.write("NETWORKING=yes\n")
target.write("HOSTNAME=")
target.write(newHostName)
target.write("\n")
target.close()

print "Modifying hosts file..."
target = open("/etc/hosts","w")
target.truncate()
target.write("127.0.0.1 ")
target.write(newHostName)
target.write(" localhost.localdomain localhosts\n")
target.close()

print "Set new hostname to %r" % newHostName
os.system('/bin/hostname ' + newHostName)
Alex Begun
fonte
2
Hmm, é um roteiro feio. Gostaria de saber se o Puppet seria uma ferramenta melhor para lidar com o nome do host.
Red Cricket
4
Esse script tem cerca de 3 vezes o tempo necessário. Python é a ferramenta errada para o trabalho. Um script bash seria muito mais curto, mais legível e mais sustentável.
Mike S
2

Nenhuma reinicialização é necessária para alterar o nome do host no CentOS 6.5.

O comando a seguir informa o kernel do novo nome do host:

# hostname new_hostname

O comando a seguir para que o nome do host seja persistente durante a reinicialização:

# sed -i "s/^HOSTNAME=.*/HOSTNAME=new_hostname/g" /etc/sysconfig/network
Pozinux
fonte
2

Se você estiver no Centos 7.x. Insira o seguinte comando.

nmtui

Ele terá uma opção de definir o nome do host do sistema . Pressione Enter nele.

Escreva seu nome de host.

Clique OK.

Agora, verifique com o comando hostname .

Ele terá seu nome de host salvo.

Hiren Parghi
fonte
1

Infelizmente, não pude alterar o nome do host inserindo:

/ etc / sysconfig / network

e

arquivo / etc / hosts

No entanto, consegui alterar o nome do host editando o arquivo abaixo:

vi /etc/hostname
server01

Reinicie e teste o nome do host:

hostname
Chandreshwar Prasad
fonte
2
Observe o comentário no OP afirmando que /etc/hostnameexiste no CentOS 7, mas não no CentOS 6
Fox