expect自动上传目录到FTP服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect自动上传目录到FTP服务器相关的知识,希望对你有一定的参考价值。

    客户需求:在/home/installer目录下会每天生成一个目录(日期格式),需要每天定时把这些目录上传到云服务器指定目录下(FTP)

    思路:crontab添加任务计划,需要自动登录ftp服务器,所以需要expect来自动输入账号密码,

    解决方案:

    1:下载所需要的工具包:expect,lftp(直接yum下载即可,此步忽略)

    2:编辑expect脚本,vim /home/install/back.expect   

#!/usr/bin/expect

set FTP_IP 192.168.1.10
set user installer
set passwd installer
set timeout 15
set date [ exec date +%F ]
# 引用date时间,要不然无法获取每天日期
set seven_ago [ exec date -d "+7 day ago" +%F ]
# 获取7天前日期,做定时删除用,"+7 day ago"必须用双引号,否则会出错
set ftp_dir /home/install/back
set local_dir /home/install

spawn /usr/bin/lftp $user:[email protected]$FTP_IP

expect {
# 切换到需要备份到ftp的目录
"*@$FTP_IP:~>" send { "cd $ftp_dir\r" }
}

expect {
# 上传本地目录里的当天目录,-c是续传,-R递归
"*$ftp_dir>" send { "mirror -R -c $local_dir/$date\r" }
}

expect {
# 上传本地目录里的ZIP文件
"*$ftp_dir>" send { "put $local_dir/$date\r" }
}

expect {
# 删除ftp目录里7天前的目录
"*$ftp_dir>" send { "rm -rf $seven_ago\r" }
} 

expect eof
exit

    3:将脚本写到任务计划里,比如每天晚上10点上传

    0 22 * * * /usr/bin/expect /home/installer/back.expect

    4:然后启动任务计划

    /etc/init.d/crontab start

本文出自 “搁浅丶” 博客,请务必保留此出处http://yasar.blog.51cto.com/9120455/1874130

以上是关于expect自动上传目录到FTP服务器的主要内容,如果未能解决你的问题,请参考以下文章

mysql自动备份数据库,同时ftp上传到指定服务器(scp远程获取本地备份)

mysql自动备份数据库,同时ftp上传到指定服务器(scp远程获取本地备份)

java Ftp上传创建多层文件的代码片段

android中如何上传图片到FTP服务器

Debian下自动备份文件并上传到远程FTP服务器且删除指定日期前的备份Shell脚本

用winrar和ftp命令实现自动备份文件并自动上传到指定的ftp服务器