[Comm] Expect
Eugene Prokopiev
=?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Ср Ноя 22 15:22:24 MSK 2006
Здравствуйте!
Есть такой expect-скрипт:
#!/usr/bin/expect -f
set timeout 5
spawn telnet localhost
expect {
"ogin:" { send -- "test\r" }
timeout { abort }
}
expect {
"assword:" { send -- "1\r" }
timeout { abort }
}
expect {
"\$" { send -- "ls\r" }
timeout { abort }
}
expect {
"\$" { send -- "exit\r" }
timeout { abort }
}
exit 0
Вывод:
$ ./login.exp
spawn telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
login: test
Password:
Last login: Wed Nov 22 15:15:13 2006 from localhost.localdomain on pts/7
-bash-2.05b$ invalid command name "abort"
while executing
"abort "
invoked from within
"expect -nobrace {$} { send -- "ls\r" } timeout { abort }"
invoked from within
"expect {
"\$" { send -- "ls\r" }
timeout { abort }
}"
(file "./login.exp" line 17)
Вопросы:
1) почему скрипт не дожидется \$ ?
2) почему abort (описанный в мане) - invalid command name?
3) можно ли упростить код, приняв что-то вроде "timeout { abort }" за
поведение по умолчанию, чтобы в основном коде остались только expect и send?
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки community