Название: Автоматизация команд Отправлено: Александр (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 телнетом не работает -pw."C:\path\to\putty.exe" -ssh -l user -pw mypassword -m shutdown.txt my.host.org Может кто подскажет изящное решение. Есть человек который прошивает роутеры, задача чтоб он мог легко из под 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 Не работает, пишет не правильный пароль рута... Название: 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 Код: cat >>/etc/sudoers Код: sudo shutdown -r now Название: Re: Автоматизация команд Отправлено: Александр (AleksHr) от 15 Марта 2012, 14:53:11 Спасибо большое! Ето то что я искал! Хотел только некторые команды позволить без рута выполнять! Спасибо!
|