A modo de introducción, y por si todavía queda alguien suscrito a este blog medio abandonado, comentaré que des de hace unos meses estoy usando dwm (lo digo por la cantidad de artículos en los que hablé de e17 y kde, algunos de ellos ya eliminados). dwm usa dmenu como lanzador de aplicaciones (los dos son proyectos de suckless.org).
Pues hace un par de días estaba en casa de un amigo trasteando un poco con dmenu y me dí cuenta de lo simple y flexible que es. Había visto usarlo como lanzador de URLs para uzbl-browser y decidí probar de hacer algo medio útil.
Y aquí va mi experimento, que es cutre y parecerá una tonteria para los que ya conozcan dmenu, pero a mi me ha sido útil.
En primer lugar creamos un fichero con las conexiones SSH que solemos lanzar y lo guardamos en ~/.ssh/menusessions.
usuario1@ejemplo.com -p 2222 usuario2@otroejemplo.com usuario2@192.168.0.10
Ahora añadimos este alias en .bashrc (o el equivalente en la SHELL que usemos):
alias sshmenu='ssh `cat ~/.ssh/menusessions | dmenu`'
Recargamos el fichero .bashrc
$ source ~/.bashrc
Y ahora con sólo ejecutar sshmenu aparecerá en la parte superior de nuestra pantalla un menú con las opciones que hayamos introducido dentro del fichero menusessions.
En base a tu idea, yo he acabado con lo siguiente:
~/bin/sshmenu:
#!/bin/bash
urxvt -e ssh `cat .ssh/config | grep ^host | awk ‘{ print $2 }’ | dmenu`
Así me salen en el dmenu todas las entradas que tengo definidas en mi ~/.ssh/config y editando un solo fichero ya tengo el menu y el config de ssh en sí
Luego ~/bin/sshmenu asociado a un shortcut en el WM y listos
Si en tu .ssh/config tienes definido
HashKnownHosts no
en el fichero .ssh/known_hosts se guardan TODAS las conexiones que realizas, asi que adaptando tu idea…
alias sm=’ssh $(cat .ssh/known_hosts|grep “,”|cut -d”,” -f1|dmenu -i -b -p “Abrir ssh a…”)’
Saludos! ;D