Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用Expect处理大型文件传输的正确方法是什么?_Linux_Tcl_Expect - Fatal编程技术网

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

Linux 使用Expect处理大型文件传输的正确方法是什么?,linux,tcl,expect,Linux,Tcl,Expect,我有一个expect脚本,它调用scp将一个大文件从服务器a复制到服务器b。目前,作为一种解决方法,我只使用“设置超时-1”。 谢谢如果传输需要很长时间(而且无法预测),关闭超时是合理的。但是,最好编写代码,以便它检测到scp打印的进度更新,然后继续等待: expect { "ETA" { puts "still transferring..." exp_continue; # <<<<--- magical

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

如果传输需要很长时间(而且无法预测),关闭超时是合理的。但是,最好编写代码,以便它检测到
scp
打印的进度更新,然后继续等待:

expect {
    "ETA" {
        puts "still transferring..."
        exp_continue;        # <<<<--- magical
    }
    "100%" {
        puts "done"
    }
}
expect{
“预计到达时间”{
将“仍在传输…”

exp_continue;#描述您到底遇到了什么问题。显示脚本中存在问题的部分。如果您不知道需要多长时间,设置无限超时听起来是合理的。千万不要考虑将“exp_continue”魔术(重置超时计数器)与超时{}或默认{}结合使用为了避免无限循环。只要我得到15个声誉,你就给我投票。谢谢你的回复。