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

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 mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

Дати відповідь електронним листом