Jorge Fuertes

Consultor de sistemas infomáticos.
Administración de sistemas, desarrollo.

Autocompletado SSH para OSX

Una de las cosas que más fastidian de la consola del Mac es que no tenga autocompletado para el comando ssh, en GNU/Linux pones el inicio del nombre del host al que te quieres conecta, pulsas tabulador y te lo completa o te muestras las opciones que coinciden.

Después de buscar un poco por ahí he encontrado una función que añadida al .bash_profile o al .bashrc (depende de vuestra configuración) consigue este mismo comportamiento:

_complete_ssh_hosts () {
        COMPREPLY=()
        cur="${COMP_WORDS[COMP_CWORD]}"
        comp_ssh_hosts=`egrep -v '^[#\[]' ~/.ssh/known_hosts|\
                cut -f 1 -d ' '|sed -e 's/[,:].*//g'|uniq;
                awk '/^Host/ { print $2; }' ~/.ssh/config`
        COMPREPLY=( $(compgen -W "${comp_ssh_hosts}" -- $cur))
        return 0
}
complete -F _complete_ssh_hosts ssh 

Todo el crédito para shocm.com.

Por otro lado he preparado un ssh-dialog en ruby que sirve para GNU, Mac u otras plataformas, con la configuración en YML, pero lo dejo para el próximo post.