linux上使用FTP下载文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux上使用FTP下载文件相关的知识,希望对你有一定的参考价值。

项目需求要去一个文件服务器下载对账文件,保存至我们系统的前置服务器。然后其他厂商连入我们的前置服务器,将文件取走进行解析。

#!/bin/bash
#@author:ping
#@function:本脚本用来定时从GC服务器下载对账文件至第三方支付系统的前置服务器
#          对账文件全部下载完成后会生成一个.ok文件
#@instructions:1、定时任务实现  2、脚本+日期(形如  ./ftpDownload.sh 20180820)
#@associative directory:
#   日志目录:/apache/Unionpay/upload/logs
#   脚本目录:/apache/Unionpay/
#   对账文件目录:/apache/Unionpay/upload
##############################如下为定义的变量区###########################
echo "**********对账文件下载的脚本开始执行***********" >> $logDire$tradeDay
#默认当前系统前一日
if [ ! -n "$1" ];then
    tradeDay=`date -d "1 days ago" +%Y%m%d`
else 
    tradeDay=$1
fi 
#定义服务器系统时间
today=`date +%Y%m%d`
#定义本地的下载存放目录
localDire="/apache/Unionpay/upload/"
#定义日志目录
logDire="/apache/Unionpay/upload/logs/"
#日志文件后缀名
suffixName=".log"
#截取日期
subYesterday=`expr substr "$tradeDay" 3 6 `
#定义五个需要的文件名
file1="IND"$subYesterday"01ACOMN"
file2="IND"$subYesterday"99ALFEE"
file3="IND"$subYesterday"99ILFEE"
file4="IND"$subYesterday"99AFCP"
file5="IND"$subYesterday"99IFCP"
file6="IND"$subYesterday"01ACOMN.ok"    ##确认文件
####################GC服务器信息######################
#FTP服务器地址
ip=192.168.43.237
#FTP账号
u=tppview
#FTP密码
pass=Tpp12#$
#GC服务器的目录地址
remoteDire="/home/gbatch/batch/file/"
addtoDire="/0000/CUP/04791922/"
####################函数定义######################
ftpFun(){
   ftp -n <<EOF
open $ip
user $u $pass
binary
passive
cd  $remoteDire$tradeDay$addtoDire   #远程服务器文件目录
hash
prompt off               #关闭交互
mget $1       
close               
bye
EOF

}
###################下载对账文件###################
if [ ! -d "$logDire" ];then
    mkdir "$logDire"
    echo "创建日志目录======$logDire"
fi
if [ ! -d "$localDire$tradeDay" ];then
    mkdir "$localDire$tradeDay"
    echo "对账文件将会保存在[$localDire$tradeDay]的目录下" >> $logDire$tradeDay$suffixName
fi
cd $localDire$tradeDay //切换目录

if [ -f "$localDire$tradeDay"/"$file6" ];then
       echo "目录[$localDire$tradeDay]下已经存在确认文件[$file6]"  >> $logDire$tradeDay$suffixName
       echo "交易日[$tradeDay]的对账文件已经下载完成"   >> $logDire$tradeDay$suffixName
   else
       echo "不存在确认文件[$file6],开始下载对账文件"
       for fileName in $file1 $file2 $file3 $file4 $file5;do
             until  [ -f $localDire$tradeDay"/"$fileName ];do
                    echo "开始下载对账文件=================="$fileName  >> $logDire$tradeDay$suffixName
                    ftpFun $fileName
                    echo "对账文件下载过程结束=================="$fileName  >> $logDire$tradeDay$suffixName
                    if [ -f $localDire$tradeDay"/"$fileName ];then
                       echo "对账文件[$fileName]已经下载到本地目录[$localDire$tradeDay]" >> $logDire$tradeDay$suffixName 
                    else
                       echo "本次没有获取到对账文件============"$fileName  >> $logDire$tradeDay$suffixName 
                       echo "休眠3分钟后继续下载文件==========="$fileName  >> $logDire$tradeDay$suffixName
                       sleep 3s  #休眠3分钟   
                    fi
             done
       done
       touch $localDire$tradeDay"/"$file6
       echo "交易日[$tradeDay]的对账文件下载完成,存放路径为[$localDire$tradeDay]"  >> $logDire$tradeDay$suffixName
fi
##############################################################################################################
echo "**********对账文件下载的脚本执行结束***********" >> $logDire$tradeDay

以上是关于linux上使用FTP下载文件的主要内容,如果未能解决你的问题,请参考以下文章

linux内核编译ftp无密码

Linux使用Shell脚本实现ftp的自动上传下载

linux服务器不能用ftp怎么上传下载文件

我的代码库-Java8实现FTP与SFTP文件上传下载

怎么从linux下载文件到win中?

Linux下使用libcurl实现FTP单个文件上传下载功能