Як змінити ім'я хоста на 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.