Как узнать, что я завершил интерактивный режим?

Я написание некоторых ожидаемых команд в bash.

Сценарий:

#!/bin/bash  
set timeout -1  

expect -c "  

spawn telnet $IP $PORT1  
sleep 1  
send \"\r\"  
send \"\r\"  
expect Prompt1>  
interact timeout 20 {  
sleep 1  
}  

expect {  
Prompt2> {send \"dir\r\" }  
}    

"  

Мои намерения в отношении сценария заключаются в том, чтобы сначала позволить ему подключиться к машине через Telnet, когда он увидит Prompt1, пусть он передаст мне управление, я выполню команду для загрузки определенное изображение. Затем дождитесь появления подсказки 2 (которая указывает на то, что изображение загружено). Затем позвольте ему выполнить дальнейший набор команд.

После запуска скрипта я мог перейти в интерактивный режим и загрузить свое изображение. Проблема в том, чтобы выйти из интерактивного режима на удаленном компьютере и вернуть ему управление.

Ошибка, которую я получил:

expect: spawn id exp4 not open  
    while executing  
"expect -nobrace Prompt2 {send "dir\r" }"  
    invoked from within  
"expect {    
Prompt2 {send "dir\r" }  
}"  

Как я могу это сделать?

5
задан Paŭlo Ebermann 21 August 2011 в 11:54
поделиться