使用Expect处理大型文件传输的正确方法是什么?

时间:2013-06-19 13:50:42

标签: linux tcl expect

我有一个期望脚本调用scp将大文件从服务器a复制到服务器b。目前作为一种解决方法我只使用“设置超时-1”。 感谢

1 个答案:

答案 0 :(得分:2)

如果传输时间过长(且不可预测),则关闭超时是合理的。但是,编写代码可能会更好,以便它检测scp打印的进度更新,然后继续等待:

expect {
    "ETA" {
        puts "still transferring..."
        exp_continue;        # <<<<--- magical
    }
    "100%" {
        puts "done"
    }
}

像这样,如果一段时间内根本没有更新,则会超时,而任何更新都会导致打印消息(您可能应该自定义)并等待下一次更新(直到整体超时)