Jak zmienić nazwę hosta w CentOS 6.5?


49

Nie mogę zmienić nazwy hosta na moim hoście CentOS 6.5. Postępuję zgodnie z instrukcjami, które tu znalazłem: http://www.rackspace.com/knowledge_center/article/centos-hostname-change

Tak sobie ustawiłem /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

... potem /etc/sysconfig/networktworzę taki plik ...

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

... wtedy biegnę hostnametak ...

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

... a potem uruchamiam bash i wszystko wydaje się dobrze ...

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

... ale po ponownym uruchomieniu sieci wraca stara nazwa hosta:

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

... nie mogę tego rozgryźć. Co robię tutaj źle?


1
Czy edytowałeś swój /etc/hostnameplik?
Anthon

Nie ma /etc/hostnamepliku. [root@smp-mig-dev-006 ~]# ls -l /etc/hostnamewynikils: cannot access /etc/hostname: No such file or directory
Red Cricket

To może być sprawa Centos. Co twoja strona mówi ci o trwałości hostname somename, że ma ona trwały efekt? (jeśli nie, dlaczego dzwonisz?)
Anthon

3
Myślę, że /etc/hostnamejest w CentOS 7, ale nie w CentOS 6.
Pavel Šimerda

Zdaję sobie sprawę, że to jest stare, ale czuję zapach NetworkManagera w pracy, albo to, albo możesz mieć HOSTNAME = ustawiony w innym pliku niż sieć (tj. W skryptach sieciowych). Plik / etc / hostname nie jest używany w CentOS 6 (jest to rzecz systemowa; oznacza to, że CentOS 7 i nowsze wersje). Sprawdź zawartość pliku / etc / sysconfig / network-scripts / ifcfg-eth0; co jest w środku? Uwaga: jeśli spojrzysz na skrypt if_post Redhata w skryptach sieciowych /, zobaczysz, że set_hostname po prostu uruchamia „hostname $ HOSTNAME”, gdzie HOSTNAME to zmienna powłoki ustawiona w pliku sieciowym lub w pliku ifcfg-eth0.
Mike S

Odpowiedzi:


67

aby trwale zmienić nazwę hosta, musisz ją zmienić w dwóch miejscach:

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

i: dobry pomysł, jeśli masz jakieś aplikacje, które muszą rozwiązać adres IP nazwy hosta)

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

i wtedy

 rebooting the system

7
Pod koniec tych dwóch zmian dodaj hostname newHostName, nie jest konieczne ponowne uruchomienie Myślę, że
Edakos

4
Edycja pliku / etc / hosts nie wydaje się wymagana
jgritty

2
Odpowiedź została zaakceptowana, ale po pierwsze, /etc/hostszmiana jest tylko po to, aby nazwa hosta była rozpoznawalna, a nie, aby zmienić, i /etc/sysconfig/networkwygląda tak samo jak w OP. Czy ktoś może wyjaśnić, co dokładnie OP trzeba zmienić, aby działało?
Pavel Šimerda

3
Myślę, że poprawna odpowiedź powinna działać jako odpowiedź na pytanie. Powtarzanie danych z pytania jest dobre, o ile odpowiedź mówi, że OP skonfigurował je poprawnie, ale nie wykonał czynności niezbędnych do załadowania nowej konfiguracji (np. Restart).
Pavel Šimerda

2
Ponowne uruchomienie nie jest konieczne. Sprawdź strace -f nazwa hosta bla. Jądro natychmiast otrzymuje komunikat. / etc / hosts nie wpływa na nazwę hosta, przynajmniej w CentOS 6.5 (i 7). Ta odpowiedź jest niepoprawna, ponieważ brakuje w niej komendy hostname, która informuje jądro o nazwie hosta.
Mike S

65

Rozwiązanie dla CentOS 7 można znaleźć tutaj :

hostnamectl set-hostname <new hostname>

3
„hostnamectl” było dla mnie jedynym działającym rozwiązaniem w CentOS Linux wydanie 7.2.1511
AJN

.. i zrestartuj komputer, w moim przypadku.
WesternGun

Nie sądzę, że musisz się ponownie uruchamiać, po prostu ponowne zalogowanie powinno działać
FearlessHyena

5
Pytanie dotyczy CentOS 6.5. CentOS 7 to zupełnie inna bestia i ta odpowiedź tutaj nie pasuje.
Harald

15

Możesz zmienić nazwę hosta za pomocą jednego polecenia.

  • Polecenie: hostname- wyświetla starą nazwę hosta
  • Polecenie: hostname <new name>ustawia nową nazwę hosta

Przykład

$ hostname mynewhost

Za utrwalenie nowej nazwy hosta podczas ponownego uruchamiania

edytuj plik / etc / sysconfig / network , aby wyglądał jak poniżej

NETWORKING=yes
HOSTNAME=myhostanme

Aby uzyskać pomoc wideo


Uważam, że jest to najbardziej poprawna odpowiedź. Warto dodać, że działa: nazwa hosta man; pokazuje więcej opcji ustawiania ładnego, przejściowego, statycznego itp.
ekerner

Myślę, że nie wystarczy być wytrwałym przy ponownym uruchomieniu. Musisz również zmodyfikować plik / etc / sysconfig / network.
Pozinux

6

Oprócz odpowiedzi udzielonych już dla CentOS 6.5,

CentOS 7 ma również tekstowe narzędzie interfejsu użytkownika do zmiany nazwy hosta ( i innych ustawień sieciowych ), będące częścią Network Managera:

nmtui

uruchamia ten interfejs użytkownika:

wprowadź opis zdjęcia tutaj

który ma opcję Set system hostname.

Tekstowy interfejs użytkownika NetworkManager jest domyślnie zainstalowany w obrazie CentOS-7-x86_64-DVD-1511.iso, instalacja podstawowa. Jeśli twój go nie ma, możesz go zainstalować za pomocą następującego polecenia:

yum install NetworkManager-tui

2

Musiałem to zrobić dla kilku maszyn. Oto prosty skrypt Pythona, który ci pomoże. Po prostu podaj nazwę nowego hosta jako pierwszy argument skryptu.

na przykład: jeśli nazwiesz skrypt changeHost.py, uruchom go jako

changeHost.py [NewHostName]

gdzie NewHostName to żądana nazwa hosta.

Upewnij się także, aby uruchomić ten skrypt jako 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
Hmm, to brzydki scenariusz. Zastanawiam się, czy Puppet byłby lepszym narzędziem do radzenia sobie z nazwą hosta.
Red Cricket


4
Ten skrypt jest około 3 razy dłuższy, niż powinien. Python jest niewłaściwym narzędziem do tego zadania. Skrypt bash byłby znacznie krótszy, bardziej czytelny i łatwiejszy w utrzymaniu.
Mike S

2

Ponowne uruchomienie komputera nie jest wymagane w celu zmiany nazwy hosta w CentOS 6.5.

Następujące polecenie informuje jądro o nowej nazwie hosta:

# hostname new_hostname

Następujące polecenie, aby nazwa hosta była trwała podczas ponownego uruchamiania:

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

2

Jeśli korzystasz z Centos 7.x. Wstaw następujące polecenie.

nmtui

Będzie można ustawić systemową nazwę hosta . Naciśnij Enter.

Wpisz swoją nazwę hosta.

Kliknij OK.

Teraz sprawdź za pomocą polecenia nazwa hosta .

Będzie miał zapisaną nazwę hosta.


1

Niestety nie mogłem zmienić nazwy hosta, wprowadzając wpisy w:

/ etc / sysconfig / network

i

plik / etc / hosts

Udało mi się jednak zmienić nazwę hosta, edytując poniższy plik:

vi /etc/hostname
server01

Uruchom ponownie i przetestuj nazwę hosta przez:

hostname

2
Zwróć uwagę na komentarz dotyczący PO, który /etc/hostnameistnieje w CentOS 7, ale nie CentOS 6
Fox
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.