2010-09-27 28 views
0

我爲通過ssh遠程設備上執行命令的下面的腳本不採取行動:預期:出口從程序側

#!/usr/bin/expect -f 

set cmd $argv 
set timeout -1 

spawn ssh -p22 [email protected] 
match_max 100000 
expect "*?assword:*" 
send "PASS\r" 
expect "<*" 
send $cmd\r 
expect "* :" 
send "Y\r" 
expect feof 

在最後一行,我的劇本是在期待‘文件結束’爲了退出。但是,即使通信結束,遠程設備也不會發送「文件結束」。有沒有可能退出某種不活動計時器?喜歡的東西:

expect feof for 10 seconds 

回答

1

使用eoffeof

設置timeout變量前的最後希望:

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