LINUX.ORG.RU

[bash-completion] автозавершение ssh-логинов

 


0

0

возможно ли сделать так, чтобы баш запоминал использованные подключения по ssh и в последующих подключениях автоматически дополнял адреса?
например, залогинился я один раз под vasya@pupkin.ru, и в следующий раз вместо ssh vasya@pupkin.ru достаточно написать ssh va<TAB>, чтобы появился весь адрес.

</поток_сознания>

можно. google://bash+ssh+completion

mydoom ★★★
()

Имхо, более удобно и правильно дописывать часто посещаемые хосты в ~/.ssh/config . А уже по ним дополняться. Уверен, bash completion умеет такое.

Laz ★★★★★
()

Именно запоминал? Целиком?

Добавь

"\e[5~": history-search-backward
"\e[6~": history-search-forward
в /etc/inputrc.

Только вместо tab нажимай pgup.

nnz ★★★★
()
Ответ на: комментарий от nnz

думаю, это не то. я хочу чтобы, например, если я заходил на vasya@pupkin.ru и vasya@ivanov.ru, то при наборе ssh va<TAB><TAB> баш вывел мне оба варианта, как когда пишешь cho<TAB><TAB> баш выводит
chooser chown

opensuse
() автор топика
Ответ на: комментарий от opensuse

Все это позволяет сделать complete+compgen (man bash). Главный вопрос тут, действительно, где хранить историю подключений. Самое простое это .bash_history, но он не вечен и не обновляется сразу. ~/.ssh/known_hosts тоже не подойдет. Думаю, правильнее будет заботиться о сохранении истории подключений самостоятельно.

Chumka ★★★
()

Очевидно.

_ssh(){
    local opts compfile cur
    compfile=~/comptest
    opts=$(cat ${compfile})
    cur="${COMP_WORDS[COMP_CWORD]}"
    if [[ ${COMP_CWORD} -eq 1 ]]; then
        COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
        return 0
    fi
}
complete -o filenames -F _ssh ssh

Адреса хранятся в файле, задаваемом переменной $compfile, по адресу на строку.

GotF ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.