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下载文件的主要内容,如果未能解决你的问题,请参考以下文章