Re: Connection Manager
Если кому интересно, на github доступна новая версия. В ней добавлена функция exec. С её помощью, можно легко добавить в своё меню удалённые RDP, VNC и прочие машины. А так же сделать к примеру такой пункт меню: 5) Upgrade всех виртуалок Выполнить: aptitude update && aptitude upgrade -y && reboot 10.207.59.58 10.207.59.59 10.207.59.60 10.207.59.61 https://github.com/emergy/Connection-Manager Установить можно к примеру так: sudo aptitude install git libjson-xs-perl libexpect-perl cd ~/.local/share/ git clone git://github.com/emergy/Connection-Manager.git sudo ln -s ~/.local/share/Connection-Manager/connection-manager.pl /usr/local/bin/cm И правим конфиг: cp ~/.local/share/Connection-Manager/config.json.example ~/.local/share/Connection-Manager/config.json vi ~/.local/share/Connection-Manager/config.json 04.05.2011 19:23, Alex Emergy пишет: Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по SSH и Telnet Возможности: - Автологин SSH и Telnet сессий - Весьма не сложный в настройке конфиг - Многоуровневое меню (поддерживаются суб-меню любой глубины) - К любому суб-меню можно "приклеить ярлык" и обращаться на прямую к этому меню из командной строки - Одна железяка может иметь несколько ip адресов. - Описания или заметки к каждой железке отображаются в меню - Open Source Зависимости: libjson-xs-perl, libexpect-perl Установка: sudo apt-get install libjson-xs-perl libexpect-perl копируем cm к примеру в /usr/local/bin и даём бит исполняемый: chmod +x /usr/local/bin/cm создаем свой конфиг в /home/username/.cm Использование: cm [arg] Немного предыстории: Мне по долгу службы, приходиться часто лазить на удалённые железяки и серверы по ssh. Так как их приличное количество и запомнить все IP и хостнеймы просто не возможно, было решено написать простейшую менюшку на shell (скрипт авторизации написал ещё давно). Но копаться каждый раз в теле скрипта, для того чтобы добавить новую железяку надоело. Начали появляться железяки с уникальным логином/паролем (которые тоже надо помнить). В общем было решено написать нормальную менюшку на Perl. Где можно указать логин/пароль на конкретную железяку, делать суб-меню любой сложности. В общем чтобы было удобно. Под винду полно подобного софта - под линукс ничего подобного не видел. Вопросы, комментарии приветствуются. Если окажется, что это нужно кому-то кроме меня, будем развиваться ;) Конфиг: Конфиг в формате JSON. С первого взгляда может не понятен, но на самом деле довольно прост. Подробности можно узнать тут: http://ru.wikipedia.org/wiki/JSON name - имя пункта меню menu - при наличии этой опции означает, что это суб-меню arg - передавая аргумент указанный здесь из командной строки, можно сразу перейти на это суб-меню ip - ip-адрес. Если этот пункт отсутствует, то пытается подключиться по name. При наличии нескольких ip адресов, появляется меню с выбором login - логин от железяки. Может использоваться без password для SSH сессий password - пароль от железяки. Полезно для коммутаторов, маршрутизаторов description - описание, заметка или что-то вроде того type - если указан telnet, то подключаться будет по телнету конфиг должен лежать в домашней директории: ~/.cm Структура конфига очень напоминает хэши и массивы perl. Примеры конфига: 1)-- [{ "name": "server1", "ip": "192.168.11.9" }, { "name": "svn.corp", "description": "SVN-Server" }, { "name": "Активное оборудование" "arg": "a", "menu": [{ "name": "Коммутаторы", "menu": [{ "name": "192.168.11.2", "login": "admin", "password": "123456", "type": "telnet" }, { "name": "192.168.11.3, "login": "admin", "password": "123456", "type": "telnet" }] }, { "name": "Маршрутизаторы", "menu": [{ "name": "main&qu
Re: Connection Manager
6 мая 2011 г. 10:49 пользователь Roman V. Nikolaev написал: > > > В гноме есть апплет, называется "Соединиться с сервером...". Умеет > соединяться по ssh, ftp, и к виндовым (что там используется не > написано). Но у него нет списка хостов, можно только вбить данные каждый > раз ручками. > > Там же есть птичка <<Добавить закладку>>. Закладка добавляется в меню <<Переход>>. Так что совсем не обязательно вбивать данные каждый раз ручками. -- С уважением, Людмила -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Есть еще забавный ClusterSSH. В бытность, когда управлял >5 серверов, сильно помогло. http://sourceforge.net/apps/mediawiki/clusterssh/index.php?title=FAQ -- Dmitry Agafonov ~ http://agafonov.pp.ru/ -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
05.05.2011 11:34, Alex Emergy пишет: > Да кстати, никто не знает нормальных модулей, для написания апплета гном > панели? В гноме есть апплет, называется "Соединиться с сервером...". Умеет соединяться по ssh, ftp, и к виндовым (что там используется не написано). Но у него нет списка хостов, можно только вбить данные каждый раз ручками. Для remmina есть апплет на панель remmina-gnome. В общем задумка интересная. Поискал чтонить типа "connection manager" и толкового ничего не нашел, для гнома во всяком случае. Есть только разрозненные утилиты отдельно для ftp, отдельно для ssh и т.д. и они на вид не рассчитаны на большие объемы - обычные списки с хостами, удобные только при количестве хостов < 20. -- Roman V. Nikolaev mail:rsha...@rambler.ru icq: 198-364-657 jabber: rsha...@jabber.org site:http://www.rshadow.ru signature.asc Description: OpenPGP digital signature -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Оч.интересная разработка. Большое спасибо. On Wed, 04 May 2011 18:23:20 +0300, Alex Emergy wrote: Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по SSH и Telnet Возможности: - Автологин SSH и Telnet сессий - Весьма не сложный в настройке конфиг - Многоуровневое меню (поддерживаются суб-меню любой глубины) - К любому суб-меню можно "приклеить ярлык" и обращаться на прямую к этому меню из командной строки - Одна железяка может иметь несколько ip адресов. - Описания или заметки к каждой железке отображаются в меню - Open Source Зависимости: libjson-xs-perl, libexpect-perl Установка: sudo apt-get install libjson-xs-perl libexpect-perl копируем cm к примеру в /usr/local/bin и даём бит исполняемый: chmod +x /usr/local/bin/cm создаем свой конфиг в /home/username/.cm Использование: cm [arg] Немного предыстории: Мне по долгу службы, приходиться часто лазить на удалённые железяки и серверы по ssh. Так как их приличное количество и запомнить все IP и хостнеймы просто не возможно, было решено написать простейшую менюшку на shell (скрипт авторизации написал ещё давно). Но копаться каждый раз в теле скрипта, для того чтобы добавить новую железяку надоело. Начали появляться железяки с уникальным логином/паролем (которые тоже надо помнить). В общем было решено написать нормальную менюшку на Perl. Где можно указать логин/пароль на конкретную железяку, делать суб-меню любой сложности. В общем чтобы было удобно. Под винду полно подобного софта - под линукс ничего подобного не видел. Вопросы, комментарии приветствуются. Если окажется, что это нужно кому-то кроме меня, будем развиваться ;) Конфиг: Конфиг в формате JSON. С первого взгляда может не понятен, но на самом деле довольно прост. Подробности можно узнать тут: http://ru.wikipedia.org/wiki/JSON name - имя пункта меню menu - при наличии этой опции означает, что это суб-меню arg - передавая аргумент указанный здесь из командной строки, можно сразу перейти на это суб-меню ip - ip-адрес. Если этот пункт отсутствует, то пытается подключиться по name. При наличии нескольких ip адресов, появляется меню с выбором login - логин от железяки. Может использоваться без password для SSH сессий password - пароль от железяки. Полезно для коммутаторов, маршрутизаторов description - описание, заметка или что-то вроде того type - если указан telnet, то подключаться будет по телнету конфиг должен лежать в домашней директории: ~/.cm Структура конфига очень напоминает хэши и массивы perl. Примеры конфига: 1)-- [{ "name": "server1", "ip": "192.168.11.9" }, { "name": "svn.corp", "description": "SVN-Server" }, { "name": "Активное оборудование" "arg": "a", "menu": [{ "name": "Коммутаторы", "menu": [{ "name": "192.168.11.2", "login": "admin", "password": "123456", "type": "telnet" }, { "name": "192.168.11.3, "login": "admin", "password": "123456", "type": "telnet" }] }, { "name": "Маршрутизаторы", "menu": [{ "name": "main", "ip": "192.168.11.1" }] }] }] 2)-- [{ "name": "Servers on VM", "arg": "vm", "menu": [{ "name": "SVN", "ip": [ "192.168.4.9", "98.33.74.2" ], "login": "user44" }, { "name": "kvm.pika.corp", "login": "root", "description": "Hypervisor" }, { "name": "ngenix.r55.ru" }] }, { "name": "Commutators & Routers", "arg": "c", "menu": [{ "name": "192.168.4.1", "description": "Users GW", "login": "admin", "password": "1234secret" }, {
Re: Connection Manager
On Thu, 05 May 2011 10:47:36 +0300, Alex Emergy wrote: Примеры тут: http://kb.mediatemple.net/questions/1625/Using+a+SSH+Config+File Подробнее о всех ключиках тут: man ssh_config Премного благодарен <кусь> -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
И я считаю, что это прекрасная работа, и ее нельзя останавливать 05.05.2011 12:23 пользователь "Alexander Smirnov" < alexander.v.smir...@gmail.com> написал: > Alex Emergy wrote: >> но думаю публиковать больше не стану, раз это никому не надо. >> > напрастно! продолжайте разработку и публикуйте, размещайте в ланчпаде > здесь, вероятно, просто не та аудитория чтобы сделать полную оценку > вашей разработки > > -- > ubuntu-ru mailing list > ubuntu-ru@lists.ubuntu.com > https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Alex Emergy wrote: но думаю публиковать больше не стану, раз это никому не надо. напрастно! продолжайте разработку и публикуйте, размещайте в ланчпаде здесь, вероятно, просто не та аудитория чтобы сделать полную оценку вашей разработки -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Примеры тут: http://kb.mediatemple.net/questions/1625/Using+a+SSH+Config+File Подробнее о всех ключиках тут: man ssh_config 05.05.2011 00:35, Aleksander Gorohovski пишет: On Wed, 04 May 2011 18:31:45 +0300, Иван Владимирович wrote: В Wed, 04 May 2011 19:23:20 +0400 Alex Emergy пишет: Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по SSH и Telnet Хм... Для всего тоже кроме меню использую конфиг ssh. Файл config в папке ~/.ssh В него прописывается имя хоста, ключь для этого хоста, логин и прочая инфа. При двойном табе в терминале посла слова ssh вываливается список всех хостов из файла config. Зачем ваша обертка нужна я не понял ;) А мона попросить в образовательных целях пример config ? -- С уважением, Alex Emergy -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Проблема с тормозами Remmina решается установкой libssh-4 версии 0.4.7 и выше. 05.05.2011 11:34, Alex Emergy пишет: Вариант с ~/.ssh/config не плохой, но это только для SSH и только серверы. При том если их скажем 50 или больше, по суб-меню (скажем физическому положению, ЦОД'ам) их не разобьёшь. Что касается автологина на активное оборудование (коммутаторы, маршрутизаторы), то ключики тут не вариант. Попробовал Remmina - софтина весьма не плохая, но у меня к сожалению тормозит и не активна галочка сохранить пароль SSH. Так же в отличии от моего поделия, кроме имя сервера (пункта меню) там ничего не отображается. А в cm можно оставить кучу заметок в поле description. Скажем описать на каком порту железки что находится. Признаюсь честно, про оба варианта я впервые слышу. Но все же, на данном этапе, у моего скрипта возможностей больше и для меня он удобнее. ЗЫ: Увидев Remmina понял, что кроме ssh и telnet надо ещё добавить VNC и RDP, но думаю публиковать больше не стану, раз это никому не надо. Да кстати, никто не знает нормальных модулей, для написания апплета гном панели? 04.05.2011 19:31, Иван Владимирович пишет: В Wed, 04 May 2011 19:23:20 +0400 Alex Emergy пишет: Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по SSH и Telnet Хм... Для всего тоже кроме меню использую конфиг ssh. Файл config в папке ~/.ssh В него прописывается имя хоста, ключь для этого хоста, логин и прочая инфа. При двойном табе в терминале посла слова ssh вываливается список всех хостов из файла config. Зачем ваша обертка нужна я не понял ;) -- С уважением, Alex Emergy -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Вариант с ~/.ssh/config не плохой, но это только для SSH и только серверы. При том если их скажем 50 или больше, по суб-меню (скажем физическому положению, ЦОД'ам) их не разобьёшь. Что касается автологина на активное оборудование (коммутаторы, маршрутизаторы), то ключики тут не вариант. Попробовал Remmina - софтина весьма не плохая, но у меня к сожалению тормозит и не активна галочка сохранить пароль SSH. Так же в отличии от моего поделия, кроме имя сервера (пункта меню) там ничего не отображается. А в cm можно оставить кучу заметок в поле description. Скажем описать на каком порту железки что находится. Признаюсь честно, про оба варианта я впервые слышу. Но все же, на данном этапе, у моего скрипта возможностей больше и для меня он удобнее. ЗЫ: Увидев Remmina понял, что кроме ssh и telnet надо ещё добавить VNC и RDP, но думаю публиковать больше не стану, раз это никому не надо. Да кстати, никто не знает нормальных модулей, для написания апплета гном панели? 04.05.2011 19:31, Иван Владимирович пишет: В Wed, 04 May 2011 19:23:20 +0400 Alex Emergy пишет: Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по SSH и Telnet Хм... Для всего тоже кроме меню использую конфиг ssh. Файл config в папке ~/.ssh В него прописывается имя хоста, ключь для этого хоста, логин и прочая инфа. При двойном табе в терминале посла слова ssh вываливается список всех хостов из файла config. Зачем ваша обертка нужна я не понял ;) -- С уважением, Alex Emergy -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
On Wed, 04 May 2011 18:31:45 +0300, Иван Владимирович wrote: В Wed, 04 May 2011 19:23:20 +0400 Alex Emergy пишет: Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по SSH и Telnet Хм... Для всего тоже кроме меню использую конфиг ssh. Файл config в папке ~/.ssh В него прописывается имя хоста, ключь для этого хоста, логин и прочая инфа. При двойном табе в терминале посла слова ssh вываливается список всех хостов из файла config. Зачем ваша обертка нужна я не понял ;) А мона попросить в образовательных целях пример config ? -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
Мне нравится http://remmina.sourceforge.net/ , а от telnet я смог отказаться (не факт, что cмогут все, т.к. есть еще набор железа без ssh). 4 мая 2011 г. 19:23 пользователь Alex Emergy написал: > Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных сессий по > SSH и Telnet -- Dmitry Agafonov ~ http://agafonov.pp.ru/ -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Re: Connection Manager
В Wed, 04 May 2011 19:23:20 +0400 Alex Emergy пишет: > Предлагаю вашему вниманию скрипт, удобную менюшку, для удаленных > сессий по SSH и Telnet > Хм... Для всего тоже кроме меню использую конфиг ssh. Файл config в папке ~/.ssh В него прописывается имя хоста, ключь для этого хоста, логин и прочая инфа. При двойном табе в терминале посла слова ssh вываливается список всех хостов из файла config. Зачем ваша обертка нужна я не понял ;) -- ubuntu-ru mailing list ubuntu-ru@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
Connection Manager
}, { "name": "ngenix.r55.ru" }] }, { "name": "Commutators & Routers", "arg": "c", "menu": [{ "name": "192.168.4.1", "description": "Users GW", "login": "admin", "password": "1234secret" }, { "name": "192.168.1.10", "login": "admin", "password": "1234secret", "type": "telnet" }, { "name": "E650-M9-AGG-10", "ip": "10.10.3.9", "description": [ "MSK-IX (4)", "DATA-IX (2)" ], "login": "support", "password": "342r32r2ddd" }] }] -- С уважением, Alex Emergy [{ "name": "Servers on VM", "arg": "vm", "menu": [{ "name": "SVN", "ip": [ "192.168.4.9", "98.33.74.2" ], "login": "user44" }, { "name": "kvm.pika.corp", "login": "root", "description": "Hypervisor" }, { "name": "ngenix.r55.ru" }] }, { "name": "Commutators & Routers", "arg": "c", "menu": [{ "name": "192.168.4.1", "description": "Users GW", "login": "admin", "password": "1234secret" }, { "name": "192.168.1.10", "login": "admin", "password": "1234secret", "type": "telnet" }, { "name": "E650-M9-AGG-10", "ip": "10.10.3.9", "description": [ "MSK-IX (4)", "DATA-IX (2)" ], "login": "support", "password": "342r32r2ddd" }] }] #!/usr/bin/perl my $version = '1.0'; #=== # # FILE: connection-manager.pl # #USAGE: ./connection-manager.pl [-s] [arg] # # DESCRIPTION: Connection Manager # # AUTHOR: Alex Emergy # CREATED: 21.04.2011 18:28:14 # DEPENDS: libjson-xs-perl, libexpect-perl # #=== use strict; use warnings; use Data::Dumper; use Expect; use JSON::XS; use Getopt::Std; $Getopt::Std::STANDARD_HELP_VERSION = 1; our ($opt_s); getopts('s'); my $menu_file = $ENV{HOME} . "/.cm"; die "Файла конÑигÑÑаÑии $menu_file не ÑÑÑеÑÑвÑеÑ!\n" unless (-e $menu_file); # read menu file to $source_json my $source_json; open SRC, '<', $menu_file or die "Cannot open menu file: $!"; while (my $line = ) { $source_json .= $line; } close(SRC); # ARRAY from JSON my $json_xs = JSON::XS->new(); my $config = $json_xs->decode($source_json); die "Error in config" if ((!$config) or (ref($config) ne 'ARRAY')); my $arg = shift(@ARGV); $config = ck_arg($config, $config, $arg) if ($arg); show_menu($config); sub ck_arg { my $json_obj = $_[0]; my $back = $_[1]; my $ARG = $_[2]; my $r; foreach my $hash (@$json_obj) { return $hash->{menu} if ($ARG eq $hash->{arg}); if ($hash->{menu}) { $r = ck_arg($hash->{menu}, $back, $ARG); return $r if ($r); }