博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux上使用FTP下载文件
阅读量:6305 次
发布时间:2019-06-22

本文共 4787 字,大约阅读时间需要 15 分钟。

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

脚本完成后,又细想了一下,我的脚本如果获取不到文件,就会在后台一直运行。这样非常有风险,很可能会日志写太多,导致硬盘满掉。我需要让它能执行一定次数后,停下来。

#!/bin/bash#@author:ping#@phone:#@function:本脚本用来定时从GC服务器下载对账文件至第三方支付系统的前置服务器#          对账文件全部下载完成后会生成一个.ok文件#@instructions:1、定时任务实现  2、脚本+日期(形如  ./ftpDownload.sh 20180820)#@associative directory:#   日志目录: /apache/swift/unionPayReckonFile/logs#   脚本目录: /apache/swift/ #   对账文件目录: /apache/swift/unionPayReckonFile##############################如下为定义的变量区############################配置文件的路径configPath=$PWD/.ftpDownload.conf#默认当前系统前一日if [ ! -n "$1" ];then    tradeDay=`date -d "1 days ago" +%Y%m%d`else     tradeDay=$1fi #定义服务器系统时间today=`date +%Y%m%d`#定义本地的下载存放目录localDire="/apache/swift/unionPayReckonFile/"#定义日志目录logDire="/apache/swift/unionPayReckonFile/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"    ##确认文件#定义一个空白数组,用来存放获取成功的文件succ_arr=()####################GC服务器信息#######################ip=192.168.43.237#FTP账号#u=tppview#FTP密码#pass=Tpp12#$#GC服务器的目录地址#remoteDire="/home/gbatch/batch/file/"#addtoDire="/0000/CUP/04791922/"####################GC服务器信息#######################GC服务器地址,40.3.11.6为备用服务器,如果40.3.11.5发生宕机,可以修改ip切换到备用服务器。ip=`grep "gc_ip" $configPath |awk -F= '{printf "%s",$2}'`#FTP账号u=`grep "gc_u" $configPath |awk -F= '{printf "%s",$2}'`#FTP密码pass=`grep "gc_pass" $configPath |awk -F= '{printf "%s",$2}'`#GC服务器的目录地址remoteDire=`grep "gc_remoteDire" $configPath |awk -F= '{printf "%s",$2}'`addtoDire=`grep "gc_addtoDire" $configPath |awk -F= '{printf "%s",$2}'`####################函数定义######################ftpFun(){   ftp -n <
> $logDire$tradeDay$suffixNameecho "**********脚本开始执行时间`date +"%Y-%m-%d %H:%M:%S"`*******" >> $logDire$tradeDay$suffixNameif [ ! -d "$logDire" ];then mkdir "$logDire" echo "创建日志目录======$logDire"fiif [ ! -d "$localDire$tradeDay" ];then mkdir "$localDire$tradeDay" echo "对账文件将会保存在[$localDire$tradeDay]的目录下" >> $logDire$tradeDay$suffixNameficd $localDire$tradeDay //切换目录if [ -f "$localDire$tradeDay"/"$file6" ];then echo "目录[$localDire$tradeDay]下已经存在确认文件[$file6]" >> $logDire$tradeDay$suffixName echo "交易日[$tradeDay]的对账文件已经下载完成" >> $logDire$tradeDay$suffixName else echo "不存在确认文件[$file6],开始下载对账文件" >> $logDire$tradeDay$suffixName i=1 #对下载成功的文件个数计数 for fileName in $file1 $file2 $file3 $file4 $file5;do j=1 #对休眠次数计数 until [ -f $localDire$tradeDay"/"$fileName ];do echo "开始下载对账文件=================="$fileName >> $logDire$tradeDay$suffixName ftpFun $fileName echo "对账文件下载过程结束=================="$fileName >> $logDire$tradeDay$suffixName echo "$localDire$tradeDay"/"$fileName =====文件名" if [ -f $localDire$tradeDay"/"$fileName ];then echo "对账文件[$fileName]已经下载到本地目录[$localDire$tradeDay]" >> $logDire$tradeDay$suffixName succ_arr[i]=$fileName echo "下载的第$i个文件是$fileName" >> $logDire$tradeDay$suffixName let i=i+1 else echo "本次没有获取到对账文件============"$fileName >> $logDire$tradeDay$suffixName echo "休眠15分钟后继续下载文件==========="$fileName >> $logDire$tradeDay$suffixName sleep 1s #休眠15分钟 if [ $j -gt 4 ];then break else echo "$fileName文件下载过程的第$j次休眠" >> $logDire$tradeDay$suffixName let j=j+1 fi fi done done num=${#succ_arr[@]} if [ -z "$num" ];then echo "交易日[$tradeDay]的对账文件没有下载完成,存放路径为[$localDire$tradeDay]" >> $logDire$tradeDay$suffixName echo "一个文件也没有下载成功" >> $logDire$tradeDay$suffixName else echo "下载成功的文件个数是$num" >> $logDire$tradeDay$suffixName if [ 5 -eq $num ];then touch $localDire$tradeDay"/"$file6 echo "交易日[$tradeDay]的对账文件全部下载完成,存放路径为[$localDire$tradeDay]" >> $logDire$tradeDay$suffixName else echo "交易日[$tradeDay]的对账文件没有全部下载完成,存放路径为[$localDire$tradeDay]" >> $logDire$tradeDay$suffixName fi fifi##############################################################################################################echo "**********对账文件下载的脚本执行结束***********" >> $logDire$tradeDay$suffixNameecho "**********脚本结束时间`date +"%Y-%m-%d %H:%M:%S"`*****" >> $logDire$tradeDay$suffixName
 

转载于:https://blog.51cto.com/babyhanggege/2166006

你可能感兴趣的文章
folders.cgi占用系统大量资源
查看>>
路由器ospf动态路由配置
查看>>
zabbix监控安装与配置
查看>>
python 异常
查看>>
last_insert_id()获取mysql最后一条记录ID
查看>>
可执行程序找不到lib库地址的处理方法
查看>>
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>
oracle数据库密码过期报错
查看>>
修改mysql数据库的默认编码方式 .
查看>>
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>
rhel6下安装配置Squid过程
查看>>
《树莓派开发实战(第2版)》——1.1 选择树莓派型号
查看>>
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>
《OpenACC并行编程实战》—— 导读
查看>>
机器学习:用初等数学解读逻辑回归
查看>>
如何在 Ubuntu 中管理和使用逻辑卷管理 LVM
查看>>