Shell 脚本中 expect 超时时间设置

本文描述了在使用rsync进行服务器备份时遇到的超时问题,尤其是在脚本中调用时。通过调整rsync和ssh的超时设置无效后,最终发现是expect的默认10秒超时导致的问题,并成功通过设置expect的超时时间解决。

      在使用 rsync 备份到服务器时,遇到执行脚本时读取发送文件指纹时 10s 左右未有返回数据则断掉的情况,但是将脚本中的rsync 命令在命令行执行时不会复现。首先怀疑的是 rsync 命令超时时间设置问题和 rsync 命令内嵌套的 ssh 超时时间,于是修改脚本,增加超时时间设置,rsync --timeout=10000 -e "ssh -o ServerAliveInterval=300 -o ConnectTimeout=300 " ,经过测试还是未生效;于是考虑使用 scp 命令,同样增加超时时间,测试还是未起作用。由于考虑在使用 rsync 命令和 ssh 命令同时都是用密码回填 expect ,于是在脚本增加 expect 的超时时间设置 set timeout -1 ,测试成功。

      expect中等待命令的输出信息是有一个timeout的设定的,默认是10秒。这个特性是防止那些执行死机的命令的。一旦到了这个timeout,还是没有屏幕输出的话,expect脚本中下面的代码就会执行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值