我目前有一个 tcl 脚本,它将 .tar.gz 发送到远程服务器。
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
然而,我的提取似乎不起作用,因为 scp 没有完全完成。有没有办法以编程方式检查 scp 何时完成?
答案1
您可以通过以下命令等待第一个生成完成
expect eof
或者如果您愿意,您可以捕获并测试返回代码
catch wait result
if [lindex $result 3] { send_user "fail\n"; exit 1 }
send_user "ok\n"