2010-09-27 24 views
0

J'ai un script suivant pour exécuter des commandes sur un périphérique distant via ssh:attendent: sortie sur aucune action du côté des programmes

#!/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 

A la dernière ligne, mon script attend « la fin du fichier » dans ordre de quitter. Cependant, le périphérique distant n'envoie jamais "fin de fichier" même si la communication est terminée. Est-il possible de sortir sur une sorte de minuteur d'inactivité? Quelque chose comme:

expect feof for 10 seconds 

Répondre

1

utilisation eof pas feof

définir la variable timeout avant la dernière attendre:

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