Есть и мануал по-русски с примерами: http://www.ibm.com/developerworks/ru/library/l-expect_1/
i Уведомление от модератора /dev/random Отрезано отсюда: Запуск пароленых программ из скрипта
Модератор: Модераторы разделов
i Уведомление от модератора /dev/random Отрезано отсюда: Запуск пароленых программ из скрипта
Позволяющие вместо синтаксиса expect изучать синтаксис перла или zsh. (:
drBatty писал(а): ↑01.09.2010 19:22
кстати, некий Mikhail E. Zakharov, ещё в 2005м году приспособил для этих целей dd, но что-то у него не очень получилось, ну он свою программу написал.
В принципе, я могу это и на sed изобразить, только зачем? Какой в этом практический смысл?
ZyX писал(а): ↑03.09.2010 00:02А вот когда я не знал про zpty я убил полчаса на то, чтобы понять, что я не разберусь за приемлемое для меня время в синтаксисе tcl (частично из-за того, что взял слишком сложный пример) настолько хорошо, чтобы вызвать две разных команды с одним паролем, получаемым от пользователя, при этом информация об аргументах содержалась в переменных окружения.
Код: Выделить всё
01: #!/usr/bin/expect -f
02: if {[llength $argv] != 2} {
03: puts "Вызов: auto_rsync.exp <ИМЯ_ХОСТА> <ПАРОЛЬ_ROOT>"
04: exit 1
05: }
06: set hostname [lindex $argv 0]
07: set password [lindex $argv 1]
08: set timeout -1
09: spawn date
10: expect -re "# $"
11: spawn rsync -av -e ssh $hostname:/etc /archive/sys
12: expect "password:" {send "$password\r"}
13: expect -re "# $"
14: spawn date
15: expect -re "# $"
16: spawn rsync -av -e ssh $hostname:/usr/etc /archive/sys
17: expect "password:" {send "$password\r"}
18: expect -re "# $"
19: spawn date
20: expect -re "# $"
21: spawn rsync -av -e ssh $hostname:/usr/work /archive/works
22: expect "password:" {send "$password\r"}
23: expect -re "# $"
24: spawn date
25: expect -re "# $"
26: exit 0