Биллинговая система Nodeny

Главная категория => Курилка => Тема начата: Александр (AleksHr) от 13 Марта 2012, 16:24:02



Название: Автоматизация команд
Отправлено: Александр (AleksHr) от 13 Марта 2012, 16:24:02
Приветствую. Возникла необходимость программы для автоматизации.

Интересует следующие: чтобы например запускать putty вводить логин, пароль, нужные команды с задержкой и завершатся.

Сделал такое через vbs, но минус в тому что нужно быть в системе, в фоне не работает.

И да, решение нужно для винды.

Ах да, что-то очень похожее нужно как в unix - expect.


Название: Re: Автоматизация команд
Отправлено: 0xbad0c0d3 от 13 Марта 2012, 17:24:55
Хыхы. Делал нечто подобное. ужно было чтобы саппорт коннектился на свитчи в другом городе, но  решение должно было быть таким, чтобы не пробрасывать влан до саппорта.
Делалось через ssh - саппорт коннектится (по ключу) к серверу который доступен извне и имеет доступ к влану в котором находятся свитчи, и вместо привычного PROMPT Shell'а у них запрос IP свитча с последующим коннектом к нему по телнету. При выходе из телнета все повторяется заново. Т.е. никаких команд саппорт выполнить не может.


Название: Re: Автоматизация команд
Отправлено: Cell от 13 Марта 2012, 17:30:13
Тут нужно понять задачи, которые выполняются таким экстравагантным способом. Мне кажется, что можно найти более продвинутое решение. А что до экспекта, так у нас на нем вся автоматизация работы с коммутаторами написана. Вот буквально сегодня поменял пароли на 423 свитчах т.к. один из админчеггов уволился. Времени заняло что-то около часа, и то из-за зоопарка оборудования.


Название: Re: Автоматизация команд
Отправлено: Crestfallen от 13 Марта 2012, 18:34:58
Разве проще юзать vbs, чем почитать мануал по Putty?  :)
"C:\path\to\putty.exe" -ssh -l user -pw mypassword -m shutdown.txt my.host.org

shutdown.txt:
shutdown -h now

где

-ssh, -telnet, -rlogin, -raw
Выбор протокола соединения.
-l login
Задать логин.
-pw MyPaSsWoRd
Задать пароль.
-m script.file
Исполнить команду. Параметр - путь к текстовому файлу со списком команд, которые требуется исполнить.

Если дефолтный шелл bash, то задержка делается методом Syntax
      sleep [NUMBER [smhd]]...
Key:
   s  :  seconds (default)
   m  :  minutes
   h  :  hours
   d  :  days

Так же есть аналог expect для Windows - wiki.tcl.tk/3548


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 13 Марта 2012, 19:50:10
Спасибо большое! Не знал что патти умеет читать команды с файла и выполнять их.


Название: Re: Автоматизация команд
Отправлено: Rico-X от 13 Марта 2012, 19:51:39
Разве проще юзать vbs, чем почитать мануал по Putty?  :)
"C:\path\to\putty.exe" -ssh -l user -pw mypassword -m shutdown.txt my.host.org
C телнетом не работает -pw.

Может кто подскажет изящное решение. Есть человек который прошивает роутеры, задача чтоб он мог легко из под windows разорвать pppoe сессию нужного юзера, по его логину (должно выдаваться сообщение типа сессия разорвана/либо логин среди активных сессий не найден)
Сложность в том что все pppoe создаются на cisco 10008. Сейчас это выглядит примерно так:
Запуск эмулятора терминала
telnet $IP-ADDRESS
username
password
enable
root password
show user | i $USERNAME
получаем номер сессии по логину
clear interface virtual-access полученный выше номер

как бы упростить эту цепочку? Через RSH нормально не получилось, кошка больно капризная :(


Название: Re: Автоматизация команд
Отправлено: Crestfallen от 13 Марта 2012, 20:03:13
Пробовали виндовый expect по ссылке выше?


Название: Re: Автоматизация команд
Отправлено: Rico-X от 13 Марта 2012, 21:45:01
Пробовали виндовый expect по ссылке выше?
Нет, не знал про него - попробую, вот думаю как его заставить окошко выплевывать при запуске "введите логин, сессию которого необходимо разорвать". Буду думать в этом направлении, спасибо за наводку.


Название: Re: Автоматизация команд
Отправлено: Cell от 13 Марта 2012, 22:30:13
Что-то я не пойму, то вам нужно выполнение в фоне, то окошко с интерактивным вводом) вы уж как-то определитесь) .
А решение самое простое. Надеюсь вебсервер у вас имеется? перл или пхп вам  в руки + биллиотека экспекта, хотя можно прямо сокетами телнет поднимать. Все, вот вам и окошко, и виндафс, и даже симбиан) ) )


Название: Re: Автоматизация команд
Отправлено: Crestfallen от 14 Марта 2012, 08:33:45
Кстати, возможно проще будет на юниксовом вебсервере поднять скрипт, и запускать его через браузер с любой ОС?)


Название: Re: Автоматизация команд
Отправлено: Rico-X от 14 Марта 2012, 10:08:02
Что-то я не пойму, то вам нужно выполнение в фоне, то окошко с интерактивным вводом) вы уж как-то определитесь) .
А решение самое простое. Надеюсь вебсервер у вас имеется? перл или пхп вам  в руки + биллиотека экспекта, хотя можно прямо сокетами телнет поднимать. Все, вот вам и окошко, и виндафс, и даже симбиан) ) )

А как скрипт в фоне будет угадывать сессию какого пользователя разорвать? Или его собрать с libastral.so Человек прошивающий роутеры не хочет может заходить на циску и сбрасывать соединение, по этому звонит мне или в техподдержку и тратит время. Вот ему и нужен простой инструмент для этого. Пойду мучать ПХП.


Название: Re: Автоматизация команд
Отправлено: 0xbad0c0d3 от 14 Марта 2012, 10:36:52
большинство операций можно сделать по SNMP. Посмотрите OIDы на эту циску, и я уверен, что найдете простое решение


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 14 Марта 2012, 11:28:14
Cell, мы разные люди, мне нужно в фоне, ему нет  ;)


Название: Re: Автоматизация команд
Отправлено: stix от 14 Марта 2012, 11:52:57
есть putty connection manager
она спасет


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 14 Марта 2012, 11:57:22
Crestfallen, putty не умеет использовать скрипты, ето только может plink.

Но! Не могу командами в скрипте залогинится под суперюзером, для той же перезагрузки.

Пример скрипта:
Код:
su
root_pass
sleep 1
shutdown -r now

Не работает, пишет не правильный пароль рута...


Название: Re: Автоматизация команд
Отправлено: stix от 14 Марта 2012, 12:12:01
смотрите выше мой пост


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 14 Марта 2012, 18:20:10
stimels, спасибо, гляну, просто нехотелося все усложнять меня бы вполне консольная утилити устроила бы  :).


Название: Re: Автоматизация команд
Отправлено: Crestfallen от 14 Марта 2012, 19:41:02
А если попробовать создать юзера, и разрешить его группе использовать su без пароля ? У меня веб-сервер таким макаром запускать из cgi директории Ping -f -s 1400 ( su -c "ping -f -s 1400 -c 1000 IP" )


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 15 Марта 2012, 09:18:52
Блин, может подскажеш, как разрешыть группе пользователя использовать su без пароля?


Название: Re: Автоматизация команд
Отправлено: stix от 15 Марта 2012, 09:31:26
Блин, может подскажеш, как разрешыть группе пользователя использовать su без пароля?
/etc/sudoers


Название: Re: Автоматизация команд
Отправлено: Crestfallen от 15 Марта 2012, 09:40:13
Я делал так :
/etc/pam.d/su


auth           requisite       pam_group.so            no_warn group=wheel root_only fail_safe меняем на auth            requisite       pam_group.so            no_warn group=wheel,www fail_safe

ниже дописываем


auth            sufficient      pam_permit.so

должно работать


Название: Re: Автоматизация команд
Отправлено: 0xbad0c0d3 от 15 Марта 2012, 10:04:10
ОмаГе )) Для этого придумали "sudo" su читает пароль не из STDIN, а напрямую из tty.


Название: Re: Автоматизация команд
Отправлено: Crestfallen от 15 Марта 2012, 10:33:24
Знаю ) Но на тот момент надо было сделать срочно, и это первое решение, которое я нашел ) + минимальная настройка. Короче, madskillz  ;D


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 15 Марта 2012, 11:22:16
0xbad0c0d3, а поконкретнее как правильно сделать может подсказать?


Название: Re: Автоматизация команд
Отправлено: 0xbad0c0d3 от 15 Марта 2012, 11:28:18
поставить из портов sudo (если фряха)
Код:
make -C /usr/ports/security/sudo install clean
sudoers у фряхи будет тут: /usr/local/etc/sudoers
Код:
cat >>/etc/sudoers
ssh_username   ALL=(ALL) NOPASSWD: shutdown
CTRL+C
Код:
sudo shutdown -r now


Название: Re: Автоматизация команд
Отправлено: Александр (AleksHr) от 15 Марта 2012, 14:53:11
Спасибо большое! Ето то что я искал! Хотел только некторые команды позволить без рута выполнять! Спасибо!