通过Expect脚本结合Crontab从Linux服务器SSH传输文件至Windows机器不稳定的问题排查求助
通过Expect脚本结合Crontab从Linux服务器SSH传输文件至Windows机器不稳定的问题排查求助
大家好,我最近碰到一个特别棘手的自动化文件传输问题,想请各位前辈帮忙分析下:
背景情况
我们有一台Linux服务器,会针对不同元素生成PDF和DOCX两种格式的报告文件。为了自动把这些文件同步到本地Windows工作站,我在Windows机器上安装了SSH服务器,并且写了一个Expect脚本(因为Windows用户需要密码验证,直接用SCP命令无法自动完成),再通过Crontab定时执行这个脚本。
遇到的问题
这套方案偶尔能正常工作,但稳定性极差:
- 有时候只同步了PDF文件,DOCX文件完全没传过去
- 有时候只同步了DOCX文件,PDF文件缺失
- 甚至部分元素对应的两种文件都没同步完整
但非常奇怪的是,如果我手动在终端里执行脚本里的SCP命令,所有文件都能完整复制,没有任何缺失。
当前配置信息
- 脚本位置与权限:
[root@kns-db ~]# ll -rwxr-xr-x 1 root root 196 Jan 13 2023 kopiranje_batt.exp
- Expect脚本内容:
#!/usr/bin/kopiranje_batt spawn scp -r -p /home/kns_ftp/MPS_report/ mnadmin@xxx.xxx.xxx.xxx:C:/Users/mnadmin/desktop/ set pass "xxx" expect { password: {send "$pass\r"; exp_continue} }
注:这里注意到脚本的shebang行写的是
#!/usr/bin/kopiranje_batt,看起来大概率是笔误,正常应该指向系统的expect解释器路径,比如#!/usr/bin/expect,这个错误可能会导致脚本执行异常?
- Crontab定时任务配置:
[root@kns-db ~]# crontab -l 0 05,09,10,18,20,22 * * * expect /root/kopiranje_batt.exp
补充:从Windows端WINSCP的截图可以看到,确实存在部分元素仅同步单一格式文件的情况(比如有的只有DOCX,有的只有PDF)
我的疑问
现在我完全摸不着头绪,不知道该从哪个方向开始排查这个问题?有没有大佬能给点排查思路或者可能的原因分析?
备注:内容来源于stack exchange,提问作者anej zafred
相关产品推荐
相关产品推荐

