Як змінити ім'я хоста на CentOS 6.5?


49

Я не можу змінити ім'я хоста на своєму хості 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

... а потім я запускаю баш і все здається добре ...

    [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
Red Cricket

Це може бути річ Centos. Що говорить ваша сторінка про постійність hostname somename, що вона має тривалий ефект? (якщо ні, чому ви робите цей дзвінок?)
Антон

3
Я думаю, що /etc/hostnameце в CentOS 7, але не в CentOS 6.
Павло Шімерда

Я усвідомлюю, що це старе, але я відчуваю, що NetworkManager працює на роботі, або це, або ви можете мати HOSTNAME = встановлений в іншому файлі, ніж мережевий (тобто в мережевих скриптах) Файл / etc / hostname не використовується в CentOS 6 (це системна річ; це означає, що CentOS 7 і вище). Перевірте вміст файлу / etc / sysconfig / network-script / ifcfg-eth0; що в ньому? Примітка. Якщо ви подивитеся на сценарій if_post Redhat у мережевих скриптах /, ви побачите, що set_hostname просто запускає "ім'я хоста $ HOSTNAME", де HOSTNAME - змінна оболонки, встановлена ​​або в мережевому файлі, або у файлі ifcfg-eth0.
Майк S

Відповіді:


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
Я думаю, що правильна відповідь має працювати як відповідь на запитання. Повторення даних із питання добре, якщо у відповіді сказано, що ОП налаштував його правильно, але не виконав дії, необхідні для завантаження нової конфігурації (наприклад, перезавантаження).
Павло Шімерда

2
Перезавантажувати не потрібно. Перевірте strace -f name хоста. Ядро отримує повідомлення одразу. / etc / hosts не впливає на ім’я хоста, щонайменше, у CentOS 6.5 (та 7). І ця відповідь невірна в тому, що в ній відсутня команда ім'я хоста, яка повідомляє ядро ​​про ім'я хоста.
Майк S

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 / мережевий файл, щоб виглядати нижче

NETWORKING=yes
HOSTNAME=myhostanme

Для відеодовідки


Я вважаю, що це найправильніша відповідь. Варто додати, що працює: man hostname; показано більше варіантів налаштування симпатичних, тимчасових, статичних тощо
ekerner

Я думаю, що недостатньо бути наполегливим при перезавантаженні. Вам також потрібно змінити / etc / sysconfig / мережевий файл.
Pozinux

6

Крім відповідей, вже наданих для CentOS 6.5,

CentOS 7 також має текстовий інструмент користувальницького інтерфейсу для зміни імені хоста ( та інших мережевих налаштувань ), що є частиною Менеджера мереж:

nmtui

запускає цей інтерфейс користувача:

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

який має можливість Set system hostname.

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

yum install NetworkManager-tui

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
Гм, це некрасивий сценарій. Цікаво, чи буде Лялечка кращим інструментом для боротьби з іменем хоста.
Червоний крикет


4
Цей сценарій приблизно в 3 рази довший, ніж він повинен бути. Python - неправильний інструмент для роботи. Баш сценарій був би набагато коротшим, читабельнішим та більш досяжним.
Майк S

2

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

Наступна команда повідомляє ядро ​​про нове ім'я хоста:

# hostname new_hostname

Наступна команда, щоб ім'я хоста було постійним під час перезавантаження:

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

2

Якщо ви перебуваєте на Centos 7.x. Вставте наступну команду.

nmtui

У ньому буде можливість встановити ім'я хоста системи . Натисніть Enter на ньому.

Напишіть ім'я хоста.

Натисніть Ок.

Тепер перевірте ім'я хоста команди .

У ньому буде збережене ім’я хоста.


1

На жаль, мені не вдалося змінити ім'я хоста, зробивши записи в:

/ etc / sysconfig / network

і

/ etc / hosts файл

Однак мені вдалося змінити ім'я хоста, відредагувавши файл нижче:

vi /etc/hostname
server01

Перезапустіть і протестуйте ім'я хоста:

hostname

2
Зверніть увагу на коментар до ОП, який стверджує, що /etc/hostnameіснує у CentOS 7, але не у CentOS 6
Fox
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.