[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