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

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

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

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

1:ftp
bash

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

  1. cd /PATH_YOU_WANT_TO_UPLOAD(DOWNLOAD)  ui

  2. ftp -niv <<- EOF  spa

  3. open IP_ADDRESS  .net

  4. user USERNAME PASSWORD  unix

  5. ascii(or bin)  code

  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


参考

相关文章
相关标签/搜索