Magazine Internet

Nom d'une machine !

Publié le 28 octobre 2007 par Peck

La dernière version sur http://linux-attitude.fr/post/Nom-dune-machine
Niveau :

d'une machined'une machined'une machined'une machined'une machine

Je suis sûr qu'il vous arrive souvent de taper ssh [email protected]. Tellement souvent que vous avez fini par modifier votre ~/.ssh/config pour y mettre des alias. Pour ceux qui ont oublié comment faire voici la ligne à mettre :

Host machine
Hostname mamachine.monreseau.net


Au passage vous pouvez ajouter le port et le login par défaut dans cette configuration.

Host machine
Hostname mamachine.monreseau.net
Port 1022
User toto

Bien, maintenant quelque chose de tout aussi sympathique. Il est possible de demander à bash de compléter ces noms de machine, plutôt que de les entrer tout seul comme un grand.
En effet, bash dispose de la complétion sur les noms de machine. Le simple fait de préfixer un nom par @ permet à ssh de supposer que c'est un nom de machine. Mais alors comment fait-il pour les connaître tous ? Il lit la variable $HOSTFILE qui doit contenir le nom d'un fichier au format /etc/hosts. Si elle est vide il lit le fichier /etc/hosts.

Donc : ssh root@l<tab> complète toujours au moins par localhost (ou presque).

Bien, mais nous n'allons pas remplir le fichier /etc/hosts à la main tout de même !

Non, nous allons faire mieux. Hop un script shell :

Bien sûr on pourrait le faire en perl, d'ailleurs, ne vous gênez pas. On pourrait aussi séparer la configuration dans un autre fichier. En attendant c'est simple et ça tient dans un fichier. Ce script scanne des domaines en leur envoyant la commande axfr et y ajoute une liste personnelle de machines. Attention, rares sont les domaines qui acceptent la commande axfr de l'extérieur, ce qui veut dire que (logique) elle doit s'appliquer à des serveurs que vous gérez, ou tout au moins pour lesquels vous avez un accès privilégié (interne).

Maintenant il vous reste à le lancer (au moins une fois), à ajouter une ligne dans votre .bashrc :

export HOSTFILE=~/.hosts


Et à ajouter ce script dans une crontab pour être toujours à jour de la liste de vos machines.

Attention, si vous avez un bash récent avec une distrib sympa, la complétion par HOSTFILE est désactivée et est remplacée par une complétion par known_hosts. Si vous voulez la réactiver, il faut taper la commande suivante (ou ne pas inclure le /etc/bash_completion) :

$ shopt -s hostcomplete


Si vous préférez la complétion telle que définie dans le bash_completion, il vous faudra avoir toutes vos machines dans votre fichier ~/.ssh/known_host. Et pour cela attendez l'article suivant ...


Retour à La Une de Logo Paperblog

A propos de l’auteur


Peck Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte