Ожидайте: выход со стороны программ без действий - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть следующий скрипт для выполнения команд на удаленном устройстве через ssh:

#!/usr/bin/expect -f

set cmd $argv
set timeout -1

spawn ssh -p22 USER@192.168.1.1
match_max 100000
expect "*?assword:*"
send "PASS\r"
expect "<*"
send $cmd\r
expect "* :"
send "Y\r"
expect feof

В последней строке мой скрипт ожидает «конец файла» для выхода.Однако удаленное устройство никогда не отправляет «конец файла», даже если связь окончена.Есть ли возможность выйти по какому-то таймеру бездействия?Что-то вроде:

expect feof for 10 seconds

1 Ответ

1 голос
/ 27 сентября 2010

используйте eof не feof

установите переменную timeout до последнего ожидания:

send "Y\r"
set timeout 10
expect {
    timeout {
        send_user "no EOF after $timeout seconds"
        exp_close
    }
    eof
}
wait
...