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

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

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

    解决方案:

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/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:$ passwd @$FTP_IP
 
expect {
# 切换到需要备份到ftp的目录
"*@$FTP_IP:~>"  send {  "cd $ftp_dir\r"  }
}
 
expect {
# 上传本地目录里的当天目录,-c是续传,-R是上传,-e是同步上传的目录里面数据,-L是把软链接内容上传
"*$ftp_dir>"  send {  "mirror -RLec $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



本文转自 运维小学生 51CTO博客,原文链接:http://blog.51cto.com/yasar/1874130,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值