536 votes

Comment changer le nom d'hôte sans redémarrage ?

Je veux changer le nom d'hôte du système d'exploitation mais je ne veux pas redémarrer.

J'ai édité /etc/hostname mais elle nécessite un redémarrage pour être mise en œuvre. Comment éviter cela ?

3 votes

Attention : ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.

0 votes

@nslntmnx, Merci !

17voto

Lucas Points 648

Voici un script qui change le nom d'hôte de la manière prescrite. Il garantit que non seulement sudo mais aussi les applications X11 continuent de fonctionner sans qu'un redémarrage soit nécessaire.

Utilisation : sudo ./change_hostname.sh new-hostname

#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"

0 votes

Que fait la dernière ligne de script su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')" faire ? Je suis juste curieux.

4 votes

@Fr0zenFyr : il faut un jeton d'authentification X11 valide ( xauth list ) et remplace l'ancien nom d'hôte par le nouveau nom d'hôte ( sed ). Alors awk met des guillemets autour du premier argument de xauth add parce que xauth Le format d'entrée et le format de sortie de l'entreprise ne sont pas symétriques.

0 votes

Merci pour l'explication. J'avais toujours redémarré pour que les changements prennent effet. +1

14voto

Tombart Points 869

Sans redémarrage :

  1. changer le nom d'hôte dans /etc/hostname
  2. mise à jour /etc/hosts en conséquence
  3. sudo sysctl kernel.hostname=mynew.local.host

Vérifiez votre nom d'hôte actuel avec hostname -f

0 votes

Avec la version 16.04, sysctl sudo: unable to resolve host oldname , sysctl: setting key "kernel.hostname": Read-only file system . Peut-être parce qu'il y a un CT dans Proxmox.

7voto

tagMacher Points 518

Pour obtenir votre nom d'hôte actuel :

cat /etc/hostname

Cela peut être modifié dans n'importe quel éditeur de texte. Vous devez également mettre à jour l'entrée autre que localhost contre 127.0.0.1 dans /etc/hosts.

1 votes

Ou exécutez simplement la commande "hostname" à partir de la ligne de commande.

5voto

Jekis Points 228

Ubuntu 16.04

Solution basée sur réponse de la communauté DigitalOcean.

Editar hôtes fichier.

$ sudo nano /etc/hosts

交換 ancien nom avec le nouveau.

127.0.0.1 localhost newname

Configurer un nouveau nom d'hôte.

$ sudo hostnamectl set-hostname newname

0 votes

Attention : ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.

4voto

Tim Schaeffer Points 1807
  1. Remplacer le contenu de /etc/hostname avec le nom d'hôte souhaité (vous pouvez le modifier avec sudo nano /etc/hostname )
  2. Sur /etc/hosts remplacez l'entrée à côté de 127.0. 1 .1 avec le nom d'hôte désiré (vous pouvez modifier avec sudo nano /etc/hosts )
  3. Exécuter sudo service hostname restart; sudo service networking restart

0 votes

Attention : ne fonctionnera pas avec Ubuntu 18+ qui exécute cloud-init par défaut, qui contrôle le nom d'hôte au démarrage.

0 votes

@nslntmnx êtes-vous sûr de cela ? Je vois dans le fichier cloud-config.txt # if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it. Je n'ai pas encore Ubuntu 18, je ne peux donc pas le tester avant le week-end.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X