SSHplus: le SSHmenu pour unity

S’il est un outil dont je ne pourrais me passer et qui freinait considérablement mon passage à unity, c’est bien sshmenu. Une fois paramétré, j’ai sous la main en quelques clics l’accès ssh aux machines que je gère.

Autant lorsqu’on n’en a que quelques unes ça peut rester gérable à la main, autant quand on en a plus d’une trentaine, c’est impensable de ne pas utiliser un outil dédié.

Malheureusement, sshmenu ne fonctionne pas avec unity. Heureusement, il existe un autre logiciel qui permet de faire la même chose et même plus, c’est SSHplus.

Le seul petit point négatif, c’est que le paramétrage se fait pour l’instant en éditant le fichier de configuration, pas avec une interface graphique. Gageons cependant que ce n’est qu’une question de temps avant que ce ne soit corrigé.

Les fonctionalités

  • Lance SSH, rdesktop, et presque n’importe quelle commande ou application
  • Compatible avec le menu de configuration de sshmenu
  • Supporte les dossiers imbriqués (mais pas encore ceux importés depuis sshmenu)

Je n’ai pas testé l’import depuis le fichier de configuration de sshmenu puisque j’en ai profité pour faire du rangement dans mes entrées, et j’ai réécrit le fichier de configuration, ce qui m’a permis de me faire la main sur son fonctionnement.

Installer SSHplus

  • Téléchargez la dernière version sur le repo github
  • Copiez le dans /usr/local/bin
  • Ajoutez lui les droits en exécution par un chmod +x /usr/local/bin/sshplus.py
  • Lancez sshplus.py ou mettez le dans vos applications au démarrage
  • Éditez le fichier de configuration ~/.sshplus comme indiqué ci dessous

La configuration

Quelques infos rapides avant de commencer:

  • Les lignes commençant par le caractère # sont ignorées (commentaires). Ne placez pas de commentaire à la suite de lignes indiquant des commandes
  • Les espaces en début de ligne sont ignorés. Vous pouvez indenter pour que le fichier soit plus clair
  • Les lignes vides sont ignorées (il n’y en a pas dans mon fichier d’exemple à cause de wordpress qui ne sais plus reconnaitre la fin du code)
  • L’instruction sep ajoute un séparateur dans le menu

Les instructions du fichier de configuration ~/.sshplus

C’est très simple, elles se présentent sous la forme NOM | COMMANDE | ARGUMENTS. Ainsi, pour ouvrir un terminal avec la commande « top », il suffit d’ajouter l’instruction suivante:

Afficher top|gnome-terminal|-x top

Pour lancer firefox sur le site des astuces d’absolacom:

Astuces d'Absolacom|firefox|http://astuces.absolacom.com

Accéder à un dossier local (la structure est la même utilisée dans le fichier ~/.gtk-bookmarks)

Dossier temporaire|nautilus|file:///tmp

ou distant

Dossier distant|nautilus|sftp://manu@192.168.10.214

A partir de là, vous voyez que c’est simple de faire ce qu’on veut. Ne reste plus qu’à savoir quoi y mettre, mais si on ne trie pas, c’est vite le bazar et il est impossible de s’y retrouver.

Menus et Sous menus

On peut heureusement créer des sous menus de façon aussi simple: il suffit d’utiliser l’instruction folder:label pour donner un nom à votre dossier, et l’instruction folder: pour remonter d’un niveau et « fermer votre dossier ».

Exemple de fichier de configuration

Je vous donne ci dessous un exemple de fichier de configuration1. Attention, rien n’est fonctionnel dans le sens ou les adresses et les identifiants sont fantaisistes. A vous d’adapter à votre besoin.

# Lanceurs d'application dans un dossier
folder:Applications
Show top|gnome-terminal|-x top
Dossier distant|nautilus|sftp://manu@192.168.10.214
# Un sous dossier
folder:Absolacom
Astuces d'Absolacom|firefox|http://astuces.absolacom.com
folder:
folder:
#sep ajoute un séparateur
sep
# label: Ajoute un label aux menus
label:Connexions SSH
SSH server1|gnome-terminal|-x ssh root@google.com
SSH server2|gnome-terminal|-x ssh -p 456 manu@192.168.10.23
sep
# Utilise rdesktop pour se connecter à des postes windows
label:Connexions RDesktop
Win-Server 1|rdesktop|-T “Win-Server 1″ 1.2.3.4
Win-Server 3 (with many arguments)|rdesktop|-g 1320×680 -T “Win-Server 3″ -x l -P -r sound:local 1.2.3.6
sep
label:Connexions Putty
# PuTTY
PuTTY-Session 1|putty|-load SavedSession1
PuTTY-Session 2|putty|-load SavedSession2
#Si un fichier de connexion sshmenu est présent, il sera ajouté automatiquement

Comme vous le voyez, c’est simple d’usage et tellement pratique.

Edit du 24/08/12

Je modifie cet article pour apporter deux petites informations.

Tout d’abord, si vous mettez un underscore dans le nom de votre raccourci, vous pourrez avoir un accès rapide en appuyant sur la lettre correspondante. Par exemple, prenons la ligne PuTTY-Session 2|putty|-load SavedSession2 du fichier ci dessus, si je la note Pu_TTY-Session 2|putty|-load SavedSession2 dans mon fichier de configuration, je pourrais lancer ce raccourci en appuyant sur la touche « T ». Pas primordial, mais pratique, d’autant que je n’ai trouvé cette info nulle part, mais en bidouillant.

Ensuite, j’ai eu besoin de transformer un fichier de conf de sshmenu vers sshplus avec des dizaines d’entrées. Impossible d’utiliser le fichier d’origine dans sshplus, il ne me le prenait pas. Étant donné qu’il n’était pas question que je refasse tout à la main dans le cas présent, j’ai écrit un petit programme python pour le convertir. Il fonctionne comme suit en ligne de commande:

  • Sans argument, il va chercher le fichier ~/.sshmenu. S’il ne le trouve pas, le programme s’arrête.
  • En précisant sur la ligne de commande le chemin vers le fichier à transformer on peut préciser le fichier à utiliser. S’il ne le trouve pas, le programme s’arrête.
  • Le résultat converti est affiché dans le terminal. Une fois validé, on peut le rediriger vers un fichier (en général ~/.sshplus)
  • Le programme essaye de récupérer l’organisation des sous dossiers de sshmenu, mais il a des soucis avec les sous-sous-sous-…dossiers. Au pire, il ne vous restera plus qu’à placer les « folder: » au bon endroit. C’est plus rapide que de le faire manuellement quand on a beaucoup d’entrées.

Téléchargez le fichier sshmenu2sshplus , renommez le en « .py »2, rendez le exécutable et lancez le en lui précisant l’emplacement vers votre fichier .sshmenu, et redirigez la sortie vers votre fichier sshplus. Par exemple:

./sshmenu2sshplus.py /tmp/.sshmenu >> ~/.sshplus

Articles en relation:

Notes:
  1. fichier fourni par le développeur et adapté par mes soins []
  2. wordpress ne me laisse pas les monter en py []
  1. 7 août 2012 à 07:21:42 | #1

    Une autre technique simple, tu crées un fichier du genre « x.desktop » et tu peux facilement configurer tes accès ssh/rdestop, vers tes serveurs. Voici un exemple:
    ————————————————-
    [Desktop Entry]
    Name=ssh in Terminal
    Comment=Use the command line
    TryExec=gnome-terminal
    Exec=gnome-terminal
    Icon=utilities-terminal
    Type=Application
    X-GNOME-DocPath=gnome-terminal/index.html
    X-GNOME-Bugzilla-Bugzilla=GNOME
    X-GNOME-Bugzilla-Product=gnome-terminal
    X-GNOME-Bugzilla-Component=BugBuddyBugs
    X-GNOME-Bugzilla-Version=2.32.1
    Categories=GNOME;GTK;Utility;TerminalEmulator;
    StartupNotify=true
    OnlyShowIn=GNOME;Unity;
    X-Ubuntu-Gettext-Domain=gnome-terminal
    X-Ayatana-Desktop-Shortcuts=srv-home

    [srv-home Shortcut Group]
    Name=srv-home
    Exec=gnome-terminal -e « srv-home ou l’@ IP »
    OnlyShowIn=GNOME;Unity;
    ————————————————-
    Je ne sais pas pour sshplus mais pour « sshmenu » l’avantage c’est qu’il utilise le contenu de ton fichier « known_hosts » pour remplir sa base. C’est plus facile quand tu gères plus de 200 serveurs. Mais malheureusement comme tu l’as dit il ne fonctionne pas correctement avec unity.
    Moi perso j’utilise un fichier « ssh.destkop » pour mes équipements réseau et la complétion pour ssh quand je me connecte à mes serveurs.

  2. 7 août 2012 à 14:10:12 | #2

    À la lecture de votre article, j’ai écrit un bout de script qui va générer un menu en fonction des applications installées sur ma machine (/usr/share/menu). Voici mon article (intiment lié au votre) : http://www.deblan.tv/post/452/i3wm-menu-d-applications

  3. 24 août 2012 à 14:29:48 | #3

    J’utilise classic menu indicator qui me permet de faire la même chose, et je préfère ne pas trop mélanger les applis avec les sessions distantes, mais pourquoi pas?

  1. Pas encore de trackbacks

Anti-Spam Quiz:

antibot * Time limit is exhausted. Please reload the CAPTCHA.

54.242.115.30