利用scp结合expect实现免输入密码进行自动异机备份,同时解决大文件传输一段时间后自动断开的问题

艺帆风顺 发布于 2025-04-03 24 次阅读


1、系统默认没有安装Expect,需要手动进行安装。

2、创建自动传输脚本

#!/usr/bin/expectset timeout -1set password "vRgmh%s9@W%MqPVuzJ^nA&cGeX2G5!3mH8asTxK2!yA&JXkS85CUh6DpBr#85PAh*jF%VQ"set latest_date [exec ls -t /home/oracle/bak | head -n 1]spawn scp -r /home/oracle/bak/$latest_date ylbak@bak.8u88.cn:/bak/定边采油厂液量系统expect { "password:" { send "$passwordr"; exp_continue }}

3、创建定时同步脚本

使用Crontab添加定时任务执行脚本,如下:

0 16 * * * /bin/bash /temp/autobak/sync4.sh

4、问题解决

    传输时,程序异常中断,导致大文件无法正常传输。

    在shell脚本手动添加:设置连接不超时

set timeout -1