Petite astuce

Tagged:

Vous avez installé votre système Ubuntu, vous avez répondu a la question "Nom du PC" un peu à la légère sans trop d'imagination en se disant "de toute façon ça me sert a rien" et la vous voyez que vous n'êtes pas sous Windows et que ce nom apparait souvent et qu'il n'est pas le reflet de ce qu'il représente ...

Sous linux on peut tout faire, alors pensez bien que ça ... C'est du gâteaux... si on tapes la commande hostname on voit ce fameux nom, et si on fait hostname -h on voit qu'on peut le modifier ...

STOP n'allez pas trop vite ... (attention il y a du vécu ;)) Le fait de changer ce nom change plein de choses ... Y compris la manière dont sudo gère ses accès à la machine ... Si bien que si vous le changer en faisant sudo hostname monnouveaunom vous avez plus accès a rien, vous redémarez et hop ... plus rien ... en faisant ça on se retrouve avec un sudo vi /etc/hosts => sudo: unknown host monanciennom !!!

Si on fait man hostname on voit que la commande est liée avec le fichier /etc/hosts. L'idéal est alors de faire :

sudo -s -H
vi /etc/hosts
# on change le nom ici (oui oui il y est ... pour plus de sécurité on laisse l'ancien histoire d'être sur !!!)
# on a donc : 127.0.0.1 localhost monanciennom monnouveaunom
hostname monnouveaunom
exit

et là c'est déjà plus prudent ... si vous le voulez vous pouvez en vous assurant que tout fonctionne bien, supprimer l'ancien nom dans le fichier /etc/hosts mais ça mange pas de pain de le laisser ;)

Comments

Hum ... on ne peut pas tout simplement changer en utilisant l'interface graphique dans :
Système > Administration > Réseaux > Général ?

Dis nous si c'est équivalent ou pas :)

moi j'ai aussi une ligne avec 127.0.1.1, a quoi sert elle ?

Doit on la changer aussi ?

Une bonne explication se trouve ici (et , vous trouverez la conduite à tenir si vous avez malencontreusement planté ubuntu).
Google is your friend.

@Omnisilver> je vais tester ça ... nonobstant le fait que je râle tout le temps sur la ligne de commande, je suis sur que je ne maitrise pas complètement l'interface graphique ... ça fait peur ...

@kumy> je pense avoir vu ça une fois... C'est simple fait un ping dessus et si ça répond pas et ben ça sert a rien et tu peux la virer ;)

@kodiak> grosso modo c'est ce que j'ai du faire pour récupérer mon système, a savoir que j'avais viré la ligne du rescue, j'avais du la retrouver de tête dans le truc grub ... en qwerty en plus je m'étais amusé loool

En fait il faut se documenter avant d'agir, c'est toujousr valable ...

je pense que ce poste est assez inexact.

la commande hostname permet de changer le nom de la machine mais pas de maniere definitive, si tu reboot, le nom sera remis comme l'ancien.

en fait si on regarde bien c'est /etc/init.d/hostname.sh qui défini au moment du boot le nom de la machine, ce script shell va recuperer ce nom dans le fichier /etc/hostname
et va passer le contenu de ce fichier a la commande hostname.

le fichier /etc/hosts permet juste de gerer la resolution de nom en local, en gros il sert a faire DNS local

et c'est pour cela que sudo se met a ne plus fonctionner, car sudo essayer de trouver quel est l'ip qui correspond au nouveau nom et comme il ne trouve aucune correspondance dans /etc/hosts, il refuse l'execution.

donc pour resumer si tu veux changer le nom de ta machine en ligne de commande, il faut faire comme ceci:
1) sudo -s
2) echo "nom" > /etc/hostname
3) editer /etc/hosts
4) /etc/init.d/hostname.sh start

Très juste ;)

1) Effectivement le script fonctionne comme ça ... cela dit, si on tape hostname et qu'on reboot ça fonctionne quand même ... il doit se passer autre chose ! (voir ici par exxemple)
2) je redémarre pas ma machine j'ai pas eu l'occasion de m'en rendre compte ... =)

je viens de vérifier
si tu fait juste
sudo hostname toto && sudo reboot

ben quand la machine reboot elle a pas changer de nom, ce qui est tout a fait normal a mon avis.

car la commande hostname modifie les information kernel

tu peux le vérifier très facilement en faisant
sysctl kernel.hostname

ça va t'afficher le hostname, si tu veux le changer avec la commande sysctl, tu fais
sudo sysctl -w kernel.hostname=localhost

tu peux verifier en tappant hostname que le nom a bien ete changer

donc pour resumer:
hostname $NOM est equivalent a sysctl -w kernel.hostname=$NOM

et ce qui tout les vairables sysctl sont remise a leur valeur par defaut a chaque reboot

a moin que tu la modifie dans /etc/sysctl.conf

petite parenthèse un post sur la commande sysctl pourrait etre très interessant car c'est la commande qui permet de tuner son kernel

sysctl c'est la version moderne de /proc/sys

Je confirme pour avoir essayé et avoir planté mon PC (jusqu'au démarrgae en rescue) que la manip décrite dans ce post est INEXACTE !! A manier avec précuation

... quelques inexactitudes sauf les remarques de "sebest" (toucher /etc/hosname & /etc/hosts) qui sont pertinentes ! ... et sans risques.