Re: Connection Manager

2011-05-27 Нитка Alex Emergy
Если кому интересно, на 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

2011-05-06 Нитка Людмила Бандурина
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

2011-05-06 Нитка Dmitry Agafonov
Есть еще забавный 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

2011-05-05 Нитка Roman V. Nikolaev
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

2011-05-05 Нитка Aleksander Gorohovski


Оч.интересная разработка.
Большое спасибо.

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

2011-05-05 Нитка Aleksander Gorohovski

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

2011-05-05 Нитка Алексей Чернокур
И я считаю, что это прекрасная работа, и ее нельзя останавливать
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

2011-05-05 Нитка Alexander Smirnov

Alex Emergy wrote:

но думаю публиковать больше не стану, раз это никому не надо.


напрастно! продолжайте разработку и публикуйте, размещайте в ланчпаде
здесь, вероятно, просто не та аудитория чтобы сделать полную оценку 
вашей разработки


--
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: Connection Manager

2011-05-05 Нитка Alex Emergy

Примеры тут:
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

2011-05-05 Нитка Alex Emergy
Проблема с тормозами 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

2011-05-05 Нитка 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

2011-05-04 Нитка 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
?

--
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru


Re: Connection Manager

2011-05-04 Нитка Dmitry Agafonov
Мне нравится 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

2011-05-04 Нитка Иван Владимирович
В 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

2011-05-04 Нитка Alex Emergy
   },
{
"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);
}