Connection Manager

Aleksander Gorohovski angel на feht.dgtu.donetsk.ua
Чт Май 5 08:53:44 UTC 2011


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

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"
>                  },
>                  {
>                          "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"
>                  }]
> }]
>
>
>
>
>



Подробная информация о списке рассылки ubuntu-ru