Автодополнение имен хостов в ssh

В bash замечательно работает автодополнение команд. Однако не везде.
При соединении по ssh приходится руками вбивать все параметры.
Особенно это напрягает, когда серверов, куда постоянно нужно соединяться достаточно много.
Но у этой проблемы есть простое решение.

Открываем файл /home/yakim/.ssh/config (если его нету - то создаем)
И записываем в него что-то типа:

Host myhomeserver
HostName home.test.com
User username
Port 2222

Где
Host - имя нашего сервера, по которому мы его будем вызывать;
HostName - DNS-имя сервера в сети или его IP-адрес;
User - имя пользователя для логина;
Port - номер порта, на который будем соединяться.

Теперь сделаем, собственно, автодополнение.
Для этого в файл /home/user/.bashrc добавим строку:
complete -W "$(echo `cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'`)" ssh

Теперь можно набрать
$ssh my
и дополнить клавишей TAB до ssh myhomeserver
И соединение пойдет соответственно заданным параметрам.

Добавить комментарий

Защитный код
Обновить