Organizando aliases do ssh

1

Meu .ssh/config está começando a crescer com aliases, e lembrar de todos eles está ficando mais difícil.

Você tem alguma dica para gerenciar melhor essa coleção em crescimento?

Por exemplo, um autocomplete quando digito ssh de algum tipo?

    
por John Smith 25.09.2014 / 22:01

1 resposta

0

Uma conclusão 1 bastante ruim para o Bash:

function _ssh_complete () {
    local match=${COMP_WORDS[${COMP_CWORD}]}
    local hosts=
    local default=

    local _ssh_complete_hostlist=$( \
        grep "^\s*Host\s*=" ~/.ssh/config 2>/dev/null \
            | sed -r "s/^[^=]+= *//;s/ /\n/g" \
            | sort )

    for h in $_ssh_complete_hostlist; do
        if [[ $h =~ ^$match ]]; then
            hosts="$hosts $h"
        fi
    done
    if ! (( ${COMP_CWORD} == ${#COMP_WORDS[@]}-1 )); then
        default=$( compgen -f ${COMP_WORDS[${COMP_CWORD}]} )
    fi
    COMPREPLY=($hosts $default)
}
complete -F _ssh_complete ssh

Você provavelmente desejará inicializar $_ssh_complete_hostlist fora da função de conclusão (por exemplo, durante o init de shell), caso contrário, você estará gerando três programas por teste de conclusão. O arquivo de configuração não muda tão frequentemente que seria necessário, e você sempre pode chamar a função de inicialização manualmente quando necessário.

1) por exemplo, ele só é completado no final da linha, então você tem que declarar as opções primeiro e somente então começar a digitar e completar o nome do host remoto.

    
por 25.09.2014 / 23:08

Tags