shell调用ftp(sftp)实现自动批量上传(下载)

    最近项目需要自动FTP批量上传文件或下载文件。最快的完成方式就是在shell里调用相关的命令,并用crontab调用shell脚本实现周期性FTP批理处理。

    当前流行的FTP分为 ftp vs sftp,关于这二者的的样例各举一个。

    注意:在编写shell脚本时需要特别注意脚本格式是windows or unix,因为换行符会引出一些莫名的错误。

1:ftp

    参考:http://blog.chinaunix.net/uid-20526681-id-3549245.html

  1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)  

  2. ftp -niv <<- EOF  

  3. open IP_ADDRESS  

  4. user USERNAME PASSWORD  

  5. ascii(or bin)  

  6. put *(or get)  

  7. bye  

  8. EOF  

#!/bin/bash
#=====================================================
#功能:自动生成脱机文件上,并将文件上传银联FTP服务器
#
#作者:mengfh
#日期:2014-05-07
#=====================================================

#########初始配置数据#################################

#SFTP配置信息
#用户名
USER=xxxxx
#密码
PASSWORD=xxxxxx
#待上传文件根目录
SRCDIR=${HOME}/run/data
#银联FTP目录
DESDIR=test
#银联IP
IP=192.168.1.120 

#脱机消费文件成参数
#文件记录条数
LINE=1000
#文件生成清算日期(需要变更操作)
#DATE=20140507
DATE=`date +%Y%m%d`
#文件目录
DIR=${SRCDIR}/${DATE}

#######生成脱机文件##################################
#产生文件
offline ${DATE} ${LINE}

#######上传脱机文件##################################
#获取文件
cd ${DIR} ; 
FILES=`ls`

for FILE in ${FILES}
do
    echo ${FILE}

#发送文件(关键)   
ftp -niv <<- EOF  
open ${IP}  
user ${USER} ${PASSWORD}  
cd ${DESDIR}/
put ${FILE} 
bye  
EOF

done

2:sftp

    参考:http://seanliu.sa.blog.163.com/blog/static/102965911200910164850382/

#!/bin/bash
lftp -u user,password sftp://IP:Port <<EOF or lftp -e "put theFile; quit" -u username,password sftp://remotehost
cd direcory
lcd local directory
get file.gz
#put file.gz
by
EOF

#!/bin/bash
#=====================================================
#功能:自动生成脱机文件上,并将文件上传银联FTP服务器
#
#作者:mengfh
#日期:2014-05-07
#=====================================================

#########初始配置数据#################################

#SFTP配置信息
#用户名
USER=xxxx
#密码
PASSWORD=xxxxx
#待上传文件根目录
SRCDIR=${HOME}/run/data
#银联FTP目录
DESDIR=test
#银联IP
IP=192.168.1.120

#脱机消费文件成参数
#文件记录条数
LINE=1000
#文件生成清算日期(需要变更操作)
#DATE=20140507
DATE=`date +%Y%m%d`
#文件目录
DIR=${SRCDIR}/${DATE}

#######生成脱机文件##################################
#产生文件
offline ${DATE} ${LINE}

#######上传脱机文件##################################
#获取文件
cd ${DIR} ; 
FILES=`ls`

for FILE in ${FILES}
do
    echo ${FILE}
#发送文件 (关键部分)
lftp -u ${USER},${PASSWORD} sftp://${IP} <<EOF 
cd ${DESDIR}/
lcd ${DIR}
put ${FILE} 
by
EOF

done


参考

转载于:https://my.oschina.net/3pgp/blog/262209

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值