Você pode esperar que o primeiro spawn termine seguindo-o com
expect eof
ou se preferir, pode capturar e testar o código de retorno
catch wait result
if [lindex $result 3] { send_user "fail\n"; exit 1 }
send_user "ok\n"
Atualmente, tenho um script tcl que envia um .tar.gz para um servidor remoto.
spawn scp -r "file_to_send.tar.gz" $user@$host:/
set timeout 10
spawn ssh $user@$host
expect "password: "
send -- "$passwd\r"
send -- "tar -zxvf /file_to_send.tar.gz\r"
sleep 1
No entanto, parece que meu extrato não funciona porque o scp não foi totalmente concluído. Existe uma maneira de verificar programaticamente quando o scp está completo?