Quand on a un parc important de machines à gérer, il peut devenir fastidieux de devoir à chaque fois ouvrir un nouveau terminal (ou un onglet), taper ssh -X mamachine.mondomaine.fr et de répéter l’opération 40 fois par jour. Même en mettant en place un alias ou un script qui permet de n’écrire que go mamachine, cela fait encore plein de caractères à taper.

Du coup, j’utilise un petit programme, SSHMenu, qui utilise gnome-terminal pour lancer du ssh.



Configuration de gnome-terminal :

Afin de reconnaître les différentes machines, j’utilise des profils avec des couleurs de fonds différentes, en fonction de l’OS de la machine (ex: Linux, Solaris, Aix, HP-UX…) ou de sa fonctionnalité (ex: Web, Messagerie, Dns…)

Pour créer un profile sour gnome-terminal, dans le menu Edition – Profiles puis Nouveau.

Installation de SSHMenu :

Pour Ubuntu :
  • Ajout du dépots dans le fichier /etc/apt/sources.list :

deb http://sshmenu.sourceforge.net/debian stable contrib

  • Import de la clé :

gpg --keyserver subkeys.pgp.net --recv-keys 4CC00851
gpg --export --armor 4CC00851 | sudo apt-key add -

  • Installation du paquet :

sudo apt-get update sudo apt-get install sshmenu-gnome

Pour les autres :

Page de téléchargement de SSHMenu

Installation de l’applet dans le tableau de bord :

  • clic droit au niveau du taleau de bord
  • ajouter au tableau de bord
  • rechercher sshmenu

à ce moment là, sshmenu propose deux modes : automatique ou manuel. si on choisi le mode automatique, le programme analyse le fichier ~/.ssh/known_hosts à la recherche de machines, et les ajoutent toutes les unes en dessous des autres.

J’ai commencé par utiliser ce mode, mais quand on a beaucoup de machine, on veux pouvoir les regrouper par catégorie. J’ai donc écrit un petit script, sshmenu_conf, qui prends en entrée un fichier contenant une liste de machines (à générer automatiquement ou à remplir à la main) et qui crée le fichier de configuration de sshmenu en fonction des informations entrées.

  • Syntaxe :

$ ./sshmenu_conf --help
usage: sshmenu_conf [-f] fichier [-h]
       -f              Fichier contenant une liste de machines
       -h --help       Display this help

le fichier doit être de la forme :

toto.mondomaine.com
titi.mondomaine2.fr
tata.mondomaine.com
...

Une fois lancé, le programme est récursif, et permet donc de créer autant de niveaux de sous catégories que l’on veut.

Après l’exécution du programme, il crée un fichier sshconfig, qu’il ne reste plus qu’a copier à la place du fichier de configuration :

cp sshconfig ~/.sshmenu

Et voilà ! Une fois ceci fait, on a un joli menu permettant d’accéder à toutes nos machines. En plus, il y a une entrée permettant d’ouvrir toutes les machines de chaque catégorie dans un nouveau terminal ou onglet, ce qui fait que l’on peut utiliser keyboardcast (bon post sur le sujet) afin d’exécuter des commandes en parrallèle sur plusieurs machines…

Un petit screenshot pour la route :