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.