工作中突然遇到一个问题:文件同步接口同步的数据不全。
现象如下(上图为ftp服务器,下图为本机):
ftp服务器.png
本机.png
对比分析发现,不是每天的数据都有问题,偶尔才会出现。
对脚本log日志进行分析
log.png
发现,第二个文件只完成了79%的下载。
深入代码分析,发现原因如下:
expect有默认响应(网查是30s),所以如果操作了30s的话,就会自动断开链接。
可以进行自定义设置如:
set timeout -1 //无穷大
set timeout 600 //600s
修改代码,上传一个大文件进行测试,完成100%同步,问题解决。
附录 (sftp同步脚本):
in/bash
export PATH=xx
LOG_FILE="/xx/info.log"
data=date +%Y%m%d
"{LOG_FILE}
!/usr/bin/sh
/usr/bin/expect <<-EOF
set timeout 600
spawn sftp 用户名@IP
expect {
"(yes/no)?" {send "yes\r"; expect_continue}
"password:" {send "xx\r"}
}
expect "sftp>"
send "cd /zygljk/zygl_info/qcd_yf\r"
expect "sftp>"
send "lcd /oss/python/getContactInfo/hx\r"
expect "sftp>"
网友评论