Come cambiare il nome host su CentOS 6.5?


48

Non riesco a cambiare il nome host sul mio host CentOS 6.5. Sto seguendo le istruzioni che ho trovato qui: http://www.rackspace.com/knowledge_center/article/centos-hostname-change

Ho impostato il mio /etc/hostscosì ...

    [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

... allora io faccio il mio /etc/sysconfig/networkfile in questo modo ...

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

... allora corro hostnamecosì ...

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

... e poi corro bash e tutto sembra a posto ...

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

... ma quando riavvio la mia rete ritorna il vecchio nome host:

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

... Non riesco a capirlo. Cosa sto facendo di sbagliato qui.


1
Hai modificato il tuo /etc/hostnamefile?
Anthon,

Non c'è un /etc/hostnamefile. [root@smp-mig-dev-006 ~]# ls -l /etc/hostnameuscitels: cannot access /etc/hostname: No such file or directory
Red Cricket,

Potrebbe essere una cosa Centos. Cosa ti dice la tua manpage sulla permanenza di hostname somename, che ha un effetto duraturo? (se no, perché fai quella chiamata?)
Anthon,

3
Penso che /etc/hostnamesia in CentOS 7 ma non in CentOS 6.
Pavel Šimerda il

Mi rendo conto che questo è vecchio, ma sento l'odore di NetworkManager al lavoro, o quello o potresti avere HOSTNAME = impostato in un altro file rispetto alla rete (cioè, negli script di rete). Il file / etc / hostname non è usato in CentOS 6 (è una cosa di sistema; ciò significa CentOS 7 e versioni successive). Controlla il contenuto del file / etc / sysconfig / network-scripts / ifcfg-eth0; cosa c'è dentro? Nota: se guardi lo script if_post di Redhat in network-script /, vedrai che set_hostname esegue semplicemente "hostname $ HOSTNAME", dove HOSTNAME è una variabile di shell impostata nel file di rete o nel file ifcfg-eth0.
Mike S,

Risposte:


67

per modificare il nome host in modo permanente, è necessario modificarlo in due posizioni:

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

e: una buona idea se si dispone di applicazioni che devono risolvere l'IP del nome 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 poi

 rebooting the system

7
Alla fine di queste due modifiche aggiungere hostname newHostName, non è necessario riavviare credo
Edakos

4
La modifica del file / etc / hosts non sembra essere necessaria
jgritty

2
La risposta è stata accettata, ma prima di tutto il /etc/hostscambiamento serve solo a rendere il nome host risolvibile, non a cambiarlo e ha /etc/sysconfig/networklo stesso aspetto di OP. Qualcuno può spiegare che cosa esattamente OP ha dovuto cambiare per farlo funzionare?
Pavel Šimerda,

3
Penso che una risposta corretta dovrebbe funzionare come una risposta alla domanda. La ripetizione dei dati della domanda è valida finché la risposta indica che l'OP li ha configurati correttamente ma non ha eseguito le azioni necessarie per caricare la nuova configurazione (ad es. Riavvio).
Pavel Šimerda,

2
Riavvio non necessario. Controlla strace -f hostname blah. Il kernel riceve subito il messaggio. / etc / hosts non influenza il nome host dell'host, almeno in CentOS 6.5 (e 7). E questa risposta non è corretta in quanto manca il comando hostname che è ciò che informa il kernel del nome del suo host.
Mike S,

65

Una soluzione per CentOS 7 è disponibile qui :

hostnamectl set-hostname <new hostname>

3
"hostnamectl" era l'unica soluzione funzionante per me sulla versione 7.2.1511 di CentOS Linux
AJN,

..e riavvio, nel mio caso.
WesternGun

Non penso che sia necessario riavviare solo il login dovrebbe funzionare
FearlessHyena

5
La domanda riguarda CentOS 6.5. CentOS 7 è una bestia completamente diversa e questa risposta non appartiene a questo.
Harald,

15

È possibile modificare il nome host con un singolo comando.

  • Comando: hostname- visualizza il vecchio nome host
  • Comando: hostname <new name>-questo imposta il nuovo nome host

Esempio

$ hostname mynewhost

Per mantenere il nuovo nome host al riavvio

modifica / etc / sysconfig / file di rete per apparire come di seguito

NETWORKING=yes
HOSTNAME=myhostanme

Per aiuto video


Credo che questa sia la risposta più corretta. Vale la pena aggiungere che in esecuzione: man hostname; mostra più opzioni per impostare belle, transitorie, statiche ecc.
ekerner l'

Penso che non sia sufficiente essere persistenti al riavvio. È inoltre necessario modificare il file / etc / sysconfig / network.
Pozinux

6

Oltre alle risposte già fornite per CentOS 6.5,

CentOS 7 ha anche uno strumento di interfaccia utente basato su testo per modificare il nome host ( e altre impostazioni di rete ), parte di Network Manager:

nmtui

avvia questa interfaccia utente:

inserisci qui la descrizione dell'immagine

che ha un'opzione per Set system hostname.

L'interfaccia utente di testo di NetworkManager è installata per impostazione predefinita nell'immagine CentOS-7-x86_64-DVD-1511.iso, installazione di base. Se il tuo non ce l'ha, puoi installarlo con il seguente comando:

yum install NetworkManager-tui

2

Ho dovuto farlo per un sacco di macchine. Ecco un semplice script Python per aiutarti. Fornisci semplicemente il nome del nuovo host come primo argomento dello script.

ad esempio: se si chiama lo script changeHost.py, quindi eseguirlo come

changeHost.py [NewHostName]

dove NewHostName è il nome host desiderato.

Assicurati anche di eseguire questo script come 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 è una brutta sceneggiatura. Mi chiedo se Puppet sarebbe uno strumento migliore per gestire il nome host.
Red Cricket,


4
Questo script dura circa 3 volte il tempo necessario. Python è lo strumento sbagliato per il lavoro. Uno script bash sarebbe molto più breve, più leggibile e più mantenibile.
Mike S,

2

Non è necessario riavviare per modificare il nome host su CentOS 6.5.

Il seguente comando informa il kernel del nuovo nome host:

# hostname new_hostname

Il comando seguente in modo che il nome host sia persistente al riavvio:

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

2

Se sei su Centos 7.x. Inserisci il seguente comando.

nmtui

Avrà un'opzione per impostare il nome host del sistema . Premi Invio su di esso.

Scrivi il tuo nome host.

Fai clic su OK.

Ora controlla con il comando hostname .

Avrà il tuo nome host salvato.


1

Sfortunatamente non sono stato in grado di cambiare il nome host inserendo voci in:

/ Etc / sysconfig / network

e

/ etc / hosts file

Tuttavia sono stato in grado di cambiare il nome host modificando il file di seguito:

vi /etc/hostname
server01

Riavvia e testa il nome host tramite:

hostname

2
Nota il commento sull'OP che afferma che /etc/hostnameesiste in CentOS 7, ma non in CentOS 6
Fox
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.