Как изменить имя хоста на CentOS 6.5?

48

Я не могу изменить имя хоста на моем хосте CentOS 6.5. Я следую инструкциям, которые нашел здесь: http://www.rackspace.com/knowledge_center/article/centos-hostname-change

Я установил свой /etc/hostsтак ...

    [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

... тогда я делаю свой /etc/sysconfig/networkфайл так ...

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

... тогда я бегу hostnameтак ...

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

... а потом я запускаю Bash и все, кажется, хорошо ...

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

... но когда я перезагружаю свою сеть, возвращается старое имя хоста:

    [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 ~]# 

... Я не могу понять это. Что я тут не так делаю.

Красный крикет
источник
1
Вы редактировали свой /etc/hostnameфайл?
Энтон
Там нет /etc/hostnameфайла. [root@smp-mig-dev-006 ~]# ls -l /etc/hostnameвыходыls: cannot access /etc/hostname: No such file or directory
красный крикет
Может быть, вещь Centos. Что ваша страница руководства говорит вам о постоянстве, о том hostname somename, что она имеет длительный эффект? (если нет, почему вы делаете этот звонок?)
Anthon
3
Я думаю, что /etc/hostnameв CentOS 7, но не в CentOS 6.
Павел Шимерда
Я понимаю, что это старый, но я чувствую запах NetworkManager на работе, либо у вас может быть HOSTNAME = установлено в другом файле, чем в сети (т. Е. В сетевых скриптах). Файл / etc / hostname не используется в CentOS 6 (это системная вещь; это означает CentOS 7 и выше). Проверьте содержимое файла / etc / sysconfig / network-scripts / ifcfg-eth0; что в нем? Примечание. Если вы посмотрите на скрипт if_post Redhat в network-scripts /, вы увидите, что set_hostname просто запускает «hostname $ HOSTNAME», где HOSTNAME - это переменная оболочки, установленная либо в сетевом файле, либо в файле ifcfg-eth0.
Майк С.

Ответы:

67

Для постоянного изменения имени хоста вам необходимо изменить его в двух местах:

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

и: хорошая идея, если у вас есть какие-либо приложения, которые должны разрешить IP-адрес имени хоста)

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

а потом

 rebooting the system
Сетевик
источник
7
В конце этого двух изменений добавьте hostname newHostName, перезагрузка не нужна, я думаю
Edakos
4
Редактирование файла / etc / hosts не требуется
jgritty
2
Ответ принят, но, во-первых, /etc/hostsизменение заключается только в том, чтобы сделать имя хоста разрешаемым, а не изменить его, и /etc/sysconfig/networkвыглядит так же, как в OP. Может кто-нибудь объяснить, что именно ОП нужно изменить, чтобы он работал?
Павел Шимерда
3
Я думаю, что правильный ответ должен работать как ответ на вопрос. Повторять данные из вопроса хорошо, если в ответе сказано, что OP настроил его правильно, но не выполнил действия, необходимые для загрузки новой конфигурации (например, перезагрузка).
Павел Шимерда
2
Перезагрузка не нужна. Проверьте strace -f имя хоста бла. Ядро получает сообщение сразу. / etc / hosts не влияет на имя хоста хоста, по крайней мере, в CentOS 6.5 (и 7). И этот ответ неверен в том смысле, что в нем отсутствует команда hostname, которая сообщает ядру имя своего хоста.
Майк С.
65

Решение для CentOS 7 можно найти здесь :

hostnamectl set-hostname <new hostname>
Штеффен Канстер
источник
3
«hostnamectl» был единственным рабочим решением для меня в выпуске CentOS Linux 7.2.1511
AJN
..и перезагрузка, в моем случае.
WesternGun
Я не думаю, что вам нужно перезагрузить компьютер, просто войдите в систему, и это сработает
FearlessHyena
5
Вопрос про CentOS 6.5. CentOS 7 - совершенно другой зверь, и этот ответ здесь не относится.
Харальд
15

Вы можете изменить свое имя хоста с помощью одной команды.

  • Команда: hostname- отображает старое имя хоста
  • Команда: hostname <new name>-это устанавливает новое имя хоста

пример

$ hostname mynewhost

Для сохранения нового имени хоста при перезагрузке

отредактируйте файл / etc / sysconfig / network так, как показано ниже

NETWORKING=yes
HOSTNAME=myhostanme

Для помощи видео

Вишванат говда к
источник
Я считаю, что это самый правильный ответ. Стоит добавить, что работает: man hostname; показывает больше возможностей для настройки довольно, переходного, статического и т. д.
ekerner
Я думаю, что этого недостаточно, чтобы быть настойчивым при перезагрузке. Вам также необходимо изменить файл / etc / sysconfig / network.
Pozinux
6

Помимо ответов, уже предоставленных для CentOS 6.5,

CentOS 7 также имеет инструмент текстового интерфейса пользователя для изменения имени хоста ( и других сетевых настроек ), часть Network Manager:

nmtui

запускает этот пользовательский интерфейс:

введите описание изображения здесь

который имеет возможность Set system hostname.

Текстовый пользовательский интерфейс NetworkManager установлен по умолчанию в образе CentOS-7-x86_64-DVD-1511.iso, базовая установка. Если у вас его нет, вы можете установить его с помощью следующей команды:

yum install NetworkManager-tui
Quasoft
источник
2

Я должен был сделать это для нескольких машин. Вот простой скрипт на Python, который поможет вам. Просто укажите имя нового хоста в качестве первого аргумента скрипта.

например: если вы назовете скрипт changeHost.py, запустите его как

changeHost.py [NewHostName]

где NewHostName - желаемое имя хоста.

Также убедитесь, что этот скрипт запущен от имени пользователя 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)
Алекс Бегун
источник
2
Хм, это ужасный сценарий. Интересно, будет ли Puppet лучшим инструментом для работы с именем хоста?
Красный Крикет
4
Этот скрипт примерно в 3 раза дольше, чем нужно. Python - неподходящий инструмент для работы. Сценарий bash будет намного короче, удобочитаемее и удобнее в обслуживании.
Майк С.
2

Для изменения имени хоста в CentOS 6.5 перезагрузка не требуется.

Следующая команда информирует ядро ​​о новом имени хоста:

# hostname new_hostname

Следующая команда, чтобы имя хоста было постоянным при перезагрузке:

# sed -i "s/^HOSTNAME=.*/HOSTNAME=new_hostname/g" /etc/sysconfig/network
Pozinux
источник
2

Если вы находитесь на Centos 7.x. Вставьте следующую команду.

nmtui

Он будет иметь возможность установить системное имя хоста . Нажмите Enter на нем.

Напишите ваше имя хоста.

Нажмите Ok.

Теперь проверьте с помощью имени хоста команды .

Он будет иметь ваше сохраненное имя хоста.

Хирен Парги
источник
1

К сожалению, я не смог изменить имя хоста, введя записи в:

/ И т.д. / sysconfig / сети

а также

Файл / etc / hosts

Однако я смог изменить имя хоста, отредактировав файл ниже:

vi /etc/hostname
server01

Перезапустите и проверьте имя хоста по:

hostname
Чандрешвар Прасад
источник
2
Обратите внимание на комментарий к OP, в котором говорится, что он /etc/hostnameсуществует в CentOS 7, но не в CentOS 6
Fox