LINUX.ORG.RU

одновременное выполнение

 


0

1

#!/usr/bin/expect spawn telnet «10.100.104.100» expect «USERNAME <» send «LOGIN\r» expect «PASSWORD <» send «PAROL\r» expect «<» send «KOMANDA;\r» expect «COMMAND EXEC»

1.Подскажите, как задать выполнение не одной, а несколько команд. 2.у меня IP штук 200. Как к ним сделать одновременное подключение, чтобы текст которые с них выдается после выполнения команд, выводился последовательно. Просто у меня все падает в одну кучу.

делаешь скрипт thread.expect который принимает первым позиционным аргументом ip, expect-коде вроде до аргумента можно достучаться так:

spawn telnet [lindex $argv 0]


с помощью xargs или for запускаешь их параллельно, направляя вывод каждому в свой файл, ждешь завершения всех джобов, собираешь вывод в свой последовательный результат:
for ip in `< ip_list.txt` ; do thread.expect $ip > $ip.out & done
wait 
for ip in `< ip_list.txt` ; do cat $ip.out ; done > последовательный_результат.txt 

bl ★★★
()

1. telnet - небезопасно! Пользуй ssh
2. Если тебе надо выполнить одну и туже команду на всех серваках, то есть спец. надстройки над ssh типа mussh, pssh
3. Поиск рулит - SSH команда на несколько серверов
4. посмотри на ansible

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.