Есть ли способ «ожидать» и «отправить» после команды «взаимодействовать» - PullRequest
3 голосов
/ 12 октября 2011

Итак, мне нужен вывод удаленного процесса на моем stdout, но мне также нужно иметь возможность «прослушать» его и отправить команду после сопоставления моего ключевого слова.

Мне нужно что-то вроде этого(Я знаю, что этот код неверен, его единственная цель - иллюстрация того, что мне нужно)

#!/usr/bin/expect
log_user 0
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "Password:" {send "mypassword\r"}
interact
expect "mykeyword" {send "\003\177\015"}

1 Ответ

7 голосов
/ 12 октября 2011

Если я правильно помню, вы делаете это:

#!/usr/bin/expect
log_user 0
spawn ssh -o PubkeyAuthentication=no [lindex $argv 0] -n [lindex $argv 1]
expect "Password:" {send "mypassword\r"}
interact {
     "mykeyword" {
         send "\003\177\015"
         exp_continue
     }
}

Вы передаете вещи, на которые нужно обратить внимание, и действия, которые следует принимать в качестве аргументов, interact (как и в случае expect), и в конце вы указываете сценарий ответа exp_continue, чтобы он продолжал взаимодействовать / ожидать .

...