Страница 1 из 1

expect многозадачность

Добавлено: 2013-02-10 12:23:47
CTOPMbI4
Требуется либо одновременно запускать через ssh несколько сессии либо как вариант: последовательно.
например:

spawn ssh storm@192.168.1.1
send $ogin
send $pass
send commands
.....

далее запустить еще одну консоль и дальше запустить либо такой же скрипт либо другой. А первая консоль чтобы продолжала работать.
как это реализовать ?
Почитал посмотрел что то инфы вообще мало по expect-у на лиссяре тоже смотрел.

Re: expect многозадачность

Добавлено: 2013-02-11 6:36:11
CTOPMbI4
что то с экспектом видимо не дружат тут))

Re: expect многозадачность

Добавлено: 2013-02-11 7:23:18
FiL
тут просто телепаты по февралям редко заходят. А остальным сложно понять о чем речь.

Re: expect многозадачность

Добавлено: 2013-02-11 11:15:56
kpp
Действительно, вопрос неясен.
Проблема именно с expect-ом?

Re: expect многозадачность

Добавлено: 2013-02-11 13:44:36
CTOPMbI4
kpp писал(а):Действительно, вопрос неясен.
Проблема именно с expect-ом?
Задача заходить на разные железки. запуская различные комманды и результат их вывода записывать в переменные затем передавать их обратно в скрипт на shell. И потом уже посредством shell-а выводить на экран.
пример заходим на тачку под фряхой:

Код: Выделить всё

spawn ssh@192.168.1.1
вводим логин пасс и т.д.
далее запускаем какую нибудь комманду.
send "who\r"
этот результат записать в переменную и передать обратно в крипт на sh

проблема в том что если в скрипте не написать interact (тобишь передаем управление юзверу)
то комманды не выполняются на фряхе к примеру. 
это первое .
Второе как можно зайти сразу (одновременно на более чем одну машину) тобишь как запустить через spawn более одной сессии .
и проделывать резные действия на тачке.

Re: expect многозадачность

Добавлено: 2013-02-11 14:25:09
kpp
А в чем проблема указать interact?
По второму - для параллельного выполнения действий на разных железках запускать каждую копию скрипта в фоне.
Т.е. в главном скрипте организовать вызов скрипт+железка в фоне, ожидая выполнения каждого экземпляра для получения результатов (если нужно).

Re: expect многозадачность

Добавлено: 2013-02-12 6:09:32
CTOPMbI4
В том что не нужно отдавать управление юзеру. нужно просто собрать данные и вывести ему на экран.
по второму. поподробнее как это можно реализовать?

Re: expect многозадачность

Добавлено: 2013-02-12 12:43:05
kpp
Юзер сидит за компом, с которого нужно собрать инфу по удаленным железкам, или юзер сидит за удаленной железкой и должен у себя увидеть инфу?
-Если первое.
Юзер запускает скрипт (MAIN), который пока не отработает, управление юзеру не отдаст.
В скрипте MAIN есть цикл, в котором осуществляетсмя проход по заранее подготовленному списку (IP, login, pass, может еще чего), и, запускает для каждой железки(IP) другой скрипт(INFO), который умеет подключаться к одной железке и собирать с нее инфу.
Запускать скрипт INFO можно последовательно для каждой железки, можно параллельно, указав максимальное кол-во одновременных запусков скрипта INFO.
-Если параллельно.
Каждый скрипт INFO при запуске создает уникальный pid файл, по окончанию работы этот файл удаляет, а результат сохраняет в файл.
Цикл в скрипте MAIN через указанный интервал времени проверяет кол-во запущенных скриптов INFO, и, если кол-во меньше установленного, и еще есть неопрошенные железки, запускает новый экземпляр скрипта INFO с параметрами железки.
Выход из цикла происходит в случае когда уже для всех железок был осуществлен запуск скрипта.
Далее остается дождаться окончания выполнения всех экземпляров скрипта INFO, обобщить результаты и вывести пользователю.

Re: expect многозадачность

Добавлено: 2013-02-12 12:51:32
kpp
PS
Правильно сформулированное условие задачи - 100% правильного понимания условия задачи, ну а правильно понятое условие задачи это уже 50% его решения.

Re: expect многозадачность

Добавлено: 2013-02-12 14:57:07
Neus
kpp писал(а):PS
Правильно сформулированное условие задачи - 100% правильного понимания условия задачи, ну а правильно понятое условие задачи это уже 50% его решения.
:-o