Yellow Leaf

Yellow Leaf


Поиск по сайту


Вход
Правила портала
Регистрация
Забыли пароль?
О команде проекта
Справка по оформлению постов


Последние комментарии к новостям и статьям
Re: С днём системного администратора!
Re: Вышел новый номер v10.07(2) компьютерного журнала UserAndLINUX.
Re: Отчет о первом "Runtu InstallFest" в Екатеринбурге
Re: OpenVPN сервер для офисного шлюза на FreeBSD
Re: Релиз Runtu LXDE 10.04!
Ещё комментарии >>>


Новые файлы
Debian: cue2tracks_0.2.11_all (Дополнение для CUE 2 Tracks v0.2.11)
Gentoo: cue2tracks-0.2.11 (Дополнение для CUE 2 Tracks v0.2.11)
CUE 2 Tracks v0.2.11
Jabber-Shell 20090303
EasySoft AutoRun 0.4.1


Новое на форуме
Движок сайта. версия 2.0
Нужен логопед, срочно
Словить процесс
проблемы с разделом жесткого диска
планировщик, веб интерфейс


Проекты
Jabber-Shell
Qmmp
QStarDict
PHPSAAdmin


 
   


Друзья сайта
 Open Kazan - Казанское сообщество пользователей OpenSource 


Посетителей с 08.09.2006

4671506


Внешний вид портала


RSS-Ленты
Новости
Файлы


 

   
  Яндекс цитирования  

«Жёлтый Лист» - cайт о мире юникс
Новости Форум Статьи Файлы Пользователи
   

Оптимизация работы с SSH с помощью bash-completion. Часть 2

MooSE 2008-05-04 10:25:48

Итак. Полгода назад на этом сайте была опубликована заметка «Оптимизация работы с SSH с помощью bash-completion». В ней говорилось об упрощении набора имён хостов, однако описанный там способ не свободен от недостатков, поскольку список хостов для автодополнения там определён достаточно жёстко и менять его не очень удобно.

Ниже предлагается более интересный способ, который позволяет брать имена хостов из файла ~/.ssh/known_hosts. Т.е. фактически при автодополнении будут показаны все хосты, на которые когда либо логинился пользователь.

По умолчанию в последних версиях OpenSSH имена хостов хэшируются. В нашем случае это будет мешать, и потому нужно отключить хэширование добавив строчку:

HashKnownHosts no

В файл ~/.ssh/ssh_config.

Далее удаляем (если есть) старую запись complete для ssh из ~/.bashrc и вместо неё добавляем следующую:

complete -W "`cat ~/.ssh/known_hosts | cut -d ' ' -f1 | cut -d ',' -f1 | cut -d ']' -f1 | sed 's/\[//' | sort`" ssh

Всё! Идея в том, что команда:

cat ~/.ssh/known_hosts | cut -d ' ' -f1 | cut -d ',' -f1 | cut -d ']' -f1 | sed 's/\[//' | sort

Парсит файл ~/.ssh/known_hosts, выбирая из него имена хостов.

Желаю приятной работы!:)

Ключевые слова: ssh bash bash_completion

Версия для печати

Возможно вас заинтересуют следующие товары:


Комментарии:

answer 2008-05-05 12:52:48 (*)

Я кажется наверное глуп, по скольку не понял всей сути сложной и длинной команды?

cat ~/.ssh/known_hosts | cut -f1 -d " " | sort
И хватит.
А вот вырезать [] я бы не рекомендовал, т.к. Вы сами потом через месяц не вспомните на какой порт удаленной машины вы соединялись. При малом кол-ве машин упомнить можно, но если как у меня:
answer@cyber:/home/answer>cat ~/.ssh/known_hosts | wc -l
891

[Ответить]


MooSE 2008-05-05 13:08:16 (*)

Ну это уже дело вкуса:) Главное понятна идея. А порты я в голов не плохо держу.

А вообще есть идея написать скрипт-wrapper для SSH которому можно передавать хост и порт ввиде host:port.

[Ответить]


Hubbitus 2008-05-10 21:54:49 (*)

Круто!
Спасибо большое.

Впрочем комманда выдирания самих хостов не требует столько конвееров и значительно проще может быть:
complete -W "`awk 'BEGIN {FS=" |,"} {print $1}' ~/.ssh/known_hosts | sort`" ssh

[Ответить]


Содержание*:
=

При копировании материалов с этого сайта ссылка на источник обязательна! Уважайте труд авторов!


Если материалы с этого сайта оказались вам полезны - Вы можете поддержать этот проект переведя на его счёт любую сумму, какую сочтёте нужным.

рублей


Обратная связь


© 2006-2010 Вадим Калинников aka MooSE