~/.ssh/config TAB autocomplite

Хоча я успішно зібрав PAC Manager і він навіть працює, складно вважати це гарним рішенням. Тим більше, перед цим мені довелося викручуватись, і зараз я бачу все я робив вірно. А що саме я робив не соромно і описати детальніше

~/.ssh/config

Це користувацький файл налаштувань ssh-клієнта. Якщо ви вважаєте що замісь ssh -C root@192.168.192.1 краще писати щось на зразок ssh gw, то читайте далі. Цей файл нам якраз допоможе.
Ось гіпотетичний зразок ~/.ssh/config

Host *
User yudjin
Compression yes
ServerAliveInterval 120
 
Host gw
        Hostname 192.168.192.1
        User root
        Compression no
 
Host nas
        Hostname 192.168.192.20
 
Host graphit
        Hostname 192.168.192.21
 
Host sulacko
        Hostname 192.168.192.22

Тут є кілька блоків Host. Перший має назву *, тому описані у ньому налаштування будуть застосовані до ssh при підключенні до усіх хостів, які не описані у ~/.ssh/config. Так, команда ssh -C yudjin@yudjin.name буде еквівалентною ssh yudjin.name. Користувач та компресія диктуються ~/.ssh/config, а саме першим блоком Host *.
ServerAliveInterval 120 говорить про те, що не хочу щоб сесії відвалювалися коли я піду пити чай.
Кожен наступний блок створює псевдонім підключення. До псевдоніму підв’язується справжнє ім’я хосту і комплект специфічних налаштувань. На приклад щоб зайти на 192.168.192.20 достатньо написати ssh nas. Тут має виникнути питання навіщо я задав такі довгі аліаси у наступних двох блоках, адже можна було написати щось на зразок ‘Host gr’ і ‘Host su’. На справді, як я вже казав, ssh сесій можуть бути сотні, а тоді короткі аліаси викликають плутанину, крім того можна не вводити їх повністю. Чому? – autocomplete!

TAB autocomplete

Задача добивати табом аліаси, якщо вони вводяться після команди ssh. Аліаси брати з ~/.ssh/config. Готового рішення я не знайшов, знайшов інші. А ось моє:

complete -W "$(echo `cat ~/.ssh/config | grep 'Host ' | cut -f2 | uniq | grep -v "\["`;)" ssh scp

Цей скрипт вставляємо у ~/.bashrc

source ~/.bashrc

і все працює.

Посилання

~/.ssh/config TAB autocomplite

Установка PAC Manager в Gentoo

Цікава річ, але чомусь вважається, що графічні засоби керування сесіями ssh користувачам Gentoo не потрібні. Так, Gnome Connection Manager, зібраний ebuildo’ом з оверлея Armageddon працює у мене в край дивно, а для PAC Manager ebuild’ів взагалі знайдено не було. Але сесій може бути дуже багато – десятки і навіть сотні. Навіть ідеально налаштований ~/.ssh/config може не впоратися з цією ситуацією. Я впевнений що мені ще доведеться встановлювати PAC на інші системи, тому опишу як я це робив сьогодні.

Є дві інструкції: перша китайською, а друга не працює :)

Для початку створимо set залежностей PAC для того щоб встановити/оновити/видалити його можна було одною двома командами

nano /etc/portage/sets/pacmanager

і туди вставляємо такий текст

dev-perl/yaml
dev-libs/ossp-uuid
dev-perl/crypt-cbc
dev-perl/gtk2-perl
dev-perl/Socket6
dev-perl/Net-ARP
dev-perl/Crypt-Rijndael
dev-perl/Crypt-Blowfish
dev-perl/Gtk2-Ex-Simple-List
dev-perl/gnome2-gconf
dev-perl/Expect
dev-perl/gtk2-perl
dev-perl/Gtk2-Ex-Simple-List
dev-perl/gtk2-gladexml

Деякі пакети повинні бути зібрані з певними USE-флагами, а саме:

  • dev-libs/ossp-uuid perl
  • dev-lang/perl ithreads

тому слід додати відповідні записи у /etc/portage/package.use
Тепер утановлюємо сет

emerge -av @pacmanager

Нам доведеться встановити кілька модулів Perl з архіву CPAN. Для цього запустіть cpan від імені суперкористувача

cpan

Якщо cpan запускається вперше, то він задасть кілька питань стосовно базової конфігурації. Я скрізь довірився автоматичним налаштуванням. Тепер можна встановити модулі

install Gnome2::Vte
install IO::Stty

Завантажте архів PAC з сторінки заватнаження і розпаковуйте його. У моєму випадку це версія 4.5.2.3

tar -xzvf pac-4.5.2.3-all.tar.gz
cd ./pac

Відкрийте файл ./lib/PACMain.pm і у секцію Standard (насправді байдуже куди) додайте стрічку

use Gnome2::Vte;

От і все. Тепер можна запустити обв’язку командою ./pac

Посилання

Установка PAC Manager в Gentoo