ftp传文件脚本

#####################################################################################
##营收全业务稽核Ftp脚本(日志文件为/usr1/bb/bbwh/lin/JHFtplog)                                                  
#####################################################################################

#####################################################################################
#ip地址                                                                                                              
ip_port=10.244.155.23;                                                                                      
#用户名                                                                                                              
user=revencoacct;                                                                                              
#密码                                                                                                                 
pass=acctk7KjfoE;                                                                                              
#出账月文件目录                                                                                                 
rmtCZMdir=/RAdata/CZSR/MM;                                                                        
#出账日文件目录                                                                                                 
rmtCZDdir=/RAdata/CZSR/DD;                                                                          
#欠费月文件目录                                                                                                  
rmtQFMdir=/RAdata/BSDT/MM;                                                                        
#欠费日文件目录                                                                                                 
rmtQFDdir=/RAdata/BSDT/DD;                                                                          
#营收稽核日文件目录                                                                                           
rmtYSDdir=/RAdata/QTYS/DD;                                                                          
#营收稽核月文件目录                                                                                           
rmtYSMdir=/RAdata/QTYS/MM;                                                                        
#预存款日文件目录                                                                                              
rmtYCKDdir=/RAdata/BSYC/DD;                                                                        
#预存款月文件目录                                                                                              
rmtYCKMdir=/RAdata/BSYC/MM;                                                                     
#####################################################################################

#####################################################################################
###得到指定日期的前一天 参数为YYYYMMDD
getPreDay()
{
 year=`expr substr $1 1 4`
 mon=`expr substr $1 5 2`
 day=`expr substr $1 7 2`
 day=`expr $day - 1`

 if [ $day -eq 0 ]
 then
 mon=`expr $mon - 1`
 if [ $mon -eq 0 ]
 then
        mon=12
        year=`expr $year - 1`
 fi
 lastline=`cal $mon $year | grep "[0-9]" | tail -1`
 day=`echo $lastline | awk '{print $NF}'`
 fi

 if [[ $mon -lt 10 && `expr length ${mon}` -eq 1 ]]
 then
        mon="0"$mon
 fi
       
 if [[ $day -lt 10 && `expr length ${day}` -eq 1 ]]
 then
        day="0"$day
 fi
 echo "$year$mon$day"
}

###得到指定月份的前一月
getPreMonth()
{
 year=`expr substr $1 1 4`
 mon=`expr substr $1 5 2`
 mon=`expr $mon - 1`

 if [ $mon -eq 0 ]
 then
     year=`expr $year - 1`
     mon=12
 fi
   
 if [ $mon -lt 10 ]
 then
     mon="0"$mon
 fi
 echo "$year$mon"
}

###得到地市编码
getAreaCode()
{
 set -A cityName GZ SZ ZH FS ST HZ ZJ JM ZQ SG MZ DG ZS MM SW CZ JY YJ QY HY YF
 set -A cityCode 01 02 03 04 05 06 07 08 09 10 11 12 13 15 16 17 18 19 21 22 23
 index=0
 while [ $index -lt 21 ]
 do
     if [ $1 == ${cityName[$index]} ]
     then
            echo ${cityCode[$index]}
            return
     fi
     index=$index+1
 done
 echo "-1"
}
#####################################################################################

#####################################################################################
MONTH=`date +%Y%m`
DAY=`date +%Y%m%d`
getPreDay ${DAY} | read PreDay
getPreDay ${PreDay} |  read PrePreDay
getPreDay ${PrePreDay} |  read PrePrePreDay
getPreMonth ${MONTH} | read PreMonth
getPreMonth ${PreMonth} | read PrePreMonth
getPreMonth ${PrePreMonth} | read PrePrePreMonth
JHFtplog="/usr1/bb/bbwh/lin/JHFtplog_"$DAY

for city in cz dg fs gz hy hz jy mm mz qy sg st sw sz yf yj zh zj zq zs jm
do
    ###稽核文件备份目录
    JHBakFile="/usr1/bb3/data/${city}/jihe_file_bak/"
    ###稽核文件临时目录
    JHTmpFile="/usr1/bb3/data/${city}/jihe_tmp/"
   
    ###删除稽核备份目录下的文件
    for file in `ls ${JHBakFile}`
    do
        ###如果是月文件
        if [ `expr substr $file 11 3` ==  "_M_" ]
        then
            FileMonth=`expr substr $file  14 6`
            ###删除三个月之前的文件
            if [ $FileMonth -lt $PrePrePreMonth ]
            then
             echo "rm ${JHBakFile}${file}" >> $JHFtplog
             rm ${JHBakFile}${file}
            fi
        fi
       
        ###如果是日文件
        if [ `expr substr $file 11 3` ==  "_D_" ]
        then
            FileDay=`expr substr $file 14 8`
            ###删除三天前的文件
            if [ $FileDay -lt $PrePrePreDay ]
            then
                echo "rm ${JHBakFile}${file}" >> $JHFtplog
                rm ${JHBakFile}${file}
            fi
        fi
    done
   
    ###删除稽核临时目录下保存的QC和BG文件
    for file in `ls ${JHTmpFile}`
    do
        tmpFileDay=`expr substr $file 22 8`
        ###删除三天前的文件
        if [ $tmpFileDay -lt $PrePrePreDay  ]
        then
            echo "rm ${JHTmpFile}${file}" >> $JHFtplog
            rm ${JHTmpFile}${file}
        fi                             
    done
done

#for city in cz dg fs gz hy hz jy mm mz qy sg st sw sz yf yj zh zj zq zs jm
for city in gz zs jm
do
    echo $city | tr '[a-z]' '[A-Z]'|read CITY
    getAreaCode ${CITY} | read AREACODE
    jihe_file="/usr1/bb3/data/${city}/jihe_file/"
    ###ZHC1(费用回收) ZHC3(账目变更) ZHC6(期末余额)
    for file in ZHC1 ZHC3 ZHC6
    do
        if [ ! -e "${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_01" ]
        then
            echo "touch ${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_01" >> $JHFtplog
            touch "${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_01"
        fi
   
        if [ ! -e "${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_02" ]
        then
            echo "touch ${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_02" >> $JHFtplog
            touch "${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_02"
        fi
   
        if [ ! -e "${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_03" ]
        then
            echo "touch ${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_03" >> $JHFtplog
            touch "${jihe_file}RA_${file}_${AREACODE}_D_${PreDay}_03"
        fi
    done
done

for city in cz dg fs gz hy hz jy mm mz qy sg st sw sz yf yj zh zj zq zs jm
do
    cd /usr1/bb3/data/${city}/jihe_file;
    echo "开始传送${city}的稽核文件" >> $JHFtplog
    echo "当前目录为/usr1/bb3/data/${city}/jihe_file" >> $JHFtplog

    JHbakdir=/usr1/bb3/data/${city}/jihe_file_bak
    JHtmpdir=/usr1/bb3/data/${city}/jihe_tmp
   
    for file in `ls`
    do
        awk '
        BEGIN{
   CQY["WZFX"] ="CZM"; CQY["TZFX"] ="CZM"; CQY["GZJF"] ="CZM";CQY["TCYX"] ="CZM"; CQY["TCCF"] ="CZM";
   CQY["CZYS"] = "CZM";CQY["FXYS"] = "CZM"; CQY["YXYS"] = "CZM";CQY["CZQR"] = "CZM";
   CQY["FRRT"] = "QFM"; CQY["FRRD"] = "QFM";  CQY["ABCL"] = "QFM"; CQY["BSWF"] = "QFM"; CQY["SUAR"] = "QFM";
   CQY["SUAA"] = "QFM"; CQY["BSBA"] = "QFM"; CQY["BSBG"] = "QFM";CQY["FRST"] = "QFM"; CQY["ABSI"] = "QFM";
   CQY["SFRT"] = "QFM"; CQY["SADB"] = "QFM"; CQY["TSYJ"] = "QFM"; CQY["AABT"] = "QFM"; CQY["BSBI"] = "QFM"; CQY["BSDT"] = "QFM";
   CQY["HZTS"] = "YSM"; CQY["SSTJ"] = "YSM";CQY["JZMX"] = "YSD";CQY["QTYS"] = "YSM";CQY["YHHS"] = "YSM";
   CQY["ZHB1"] = "YCKM";CQY["ZHB3"] = "YCKM";CQY["ZHB5"] = "YCKM";CQY["ZHB7"] = "YCKM";CQY["ZHD8"] = "YCKM";
   CQY["BSYC"] = "YCKM";CQY["TSMX"] = "YCKD";CQY["ZHC0"] = "YCKD";CQY["ZHC6"] = "YCKD";CQY["ZHC3"] = "YCKD";CQY["ZHC7"] = "YCKD";CQY["ZHC1"] = "YCKD";CQY["ZHC5"] = "YCKD";
                                                                       
         ###先判断是否是预存款类型的文件
         if(substr(FILENAME, 4, 4) in CQY && (CQY[substr(FILENAME, 4, 4)] == "YCKM"||CQY[substr(FILENAME, 4, 4)] == "YCKD"))
         {
                print CQY[substr(FILENAME, 4, 4)];
         }
         ###按月的文件
         else if(substr(FILENAME, 4, 4) in CQY && substr(FILENAME, 11, 3) != "_D_" )
         {
                print CQY[substr(FILENAME, 4, 4)];
         }
         else
         {
         ###营收类按天汇总文件RA_QTYS_00_D_YYYYMMDD_00_BS
         ###银行划帐及其托收统计报表,前台营收RA_HZTS_XX_D_YYYYMMDD_00
         ###实收营业统计表(银行进帐),前台营收RA_SSTJ_XX_D_YYYYMMDD_00
         ###银行进账明细,前台营收RA_JZMX_XX_D_YYYYMMDD_00
             if( (substr(FILENAME, 4, 4) == "QTYS" || substr(FILENAME, 4, 4) == "SSTJ" || substr(FILENAME, 4, 4) == "HZTS"||substr(FILENAME, 4, 4) == "JZMX") && substr(FILENAME, 11, 3) == "_D_")
             {
                    print "YSD";
             }
             ###欠费类按天汇总文件RA_BSDT_00_D_YYYYMMDD_00_BS(目前无)
             else if(substr(FILENAME, 4, 4) == "BSDT" && substr(FILENAME, 11, 3) == "_D_")
             {
                    print "QFD";
             }      
             ###出账类按天汇总文件RA_CZQR_00_D_YYYYMMDD_00_BS(目前无)
             else if(substr(FILENAME, 4, 4) == "CZQR" && substr(FILENAME, 11, 3) == "_D_")
             {
                    print "CZD";
             }              
             ###预存款类按天汇总文件RA_BSYC_00_D_YYYYMMDD_00_BS
             else if(substr(FILENAME, 4, 4) == "BSYC" && substr(FILENAME, 11, 3) == "_D_")
             {
                 print "YCKD";
             }                                                                                                                      
             else
             {
                    print "error";
             }      
         }
        }
        ' $file | read mode
       
        if [ $mode == "CZM" ]
        then
            rmtfile=${rmtCZMdir}/$file;
            tmpdir=${rmtCZMdir}/tmp
            tmpfile=${tmpdir}/$file;
        elif [ $mode == "CZD" ]
        then
            rmtfile=${rmtCZDdir}/$file;
            tmpdir=${rmtCZDdir}/tmp;
            tmpfile=${tmpdir}/$file;                                                               
        elif [ $mode == "QFM" ]
        then
            rmtfile=${rmtQFMdir}/$file;
            tmpdir=${rmtQFMdir}/tmp;
            tmpfile=${tmpdir}/$file;
        elif [ $mode == "QFD" ]
        then
            rmtfile=${rmtQFDdir}/$file;
            tmpdir=${rmtQFDdir}/tmp;
            tmpfile=${tmpdir}/$file;                                                               
        elif [ $mode == "YSD" ]
        then
            rmtfile=${rmtYSDdir}/$file;
            tmpdir=${rmtYSDdir}/tmp;
            tmpfile=${tmpdir}/$file;
        elif [ $mode == "YSM" ]
        then
            rmtfile=${rmtYSMdir}/$file;
            tmpdir=${rmtYSMdir}/tmp;
            tmpfile=${tmpdir}/$file;
        elif [ $mode == "YCKM" ]
        then
            rmtfile=${rmtYCKMdir}/$file;
            tmpdir=${rmtYCKMdir}/tmp;
            tmpfile=${tmpdir}/$file;       
        elif [ $mode == "YCKD" ]
        then
            rmtfile=${rmtYCKDdir}/$file;
            tmpdir=${rmtYCKDdir}/tmp;
            tmpfile=${tmpdir}/$file;            
        else
            ###如果是变更文件      
            if [ `expr substr $file 7 11` == "DAYWOFFCUST" ]
            then
                    mv $file  $JHtmpdir
                    echo "将变更文件${file}备份到${JHtmpdir}目录中" >> $JHFtplog 
            else
                    echo "error:"$file"文件类型错误" >> $JHFtplog
            fi
            continue;
        fi
        echo "稽核文件$file开始" >> $JHFtplog
        (
        echo user $user $pass;
        ###二进制传输模式
        echo bin;
        echo copy;
        ###关闭交互模式
        echo prompt;
        ###切换远程目录
        echo cd $tmpdir;
        ###上传文件
        echo put $file;
        ###删除远程目录文件
        echo del $rmtfile;
        ###重命名文件
        echo rename $tmpfile $rmtfile;
        ###退出FTP连接
        echo bye;
        ) | ftp -n $ip_port
        echo "ftp return:"$?
        echo "稽核文件$file传送结束" >> $JHFtplog
        mv $file $JHbakdir;
        echo "将稽核文件${file}备份到${JHbakdir}目录中" >> $JHFtplog      
    done
done
#####################################################################################

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows系统中,我们可以通过编写批处理脚本来实现定时文件FTP服务器。下面是一个简单的示例: 1. 首先,我们需要创建一个文本文件,扩展名为.bat,可以使用记事本等文本编辑器。假设我们将该文件命名为“upload.bat”。 2. 打开“upload.bat”文件,并在其中编写以下脚本: ``` @echo off echo 正在连接到FTP服务器... echo 用户名 echo 密码 echo bin echo put C:\path\to\file.txt echo bye | ftp -n -s:ftp_commands.txt ftp.example.com echo 文件完成。 ``` 上述脚本中的“用户名”和“密码”需要替换为实际的FTP服务器登录凭据。 3. 接下来,我们需要创建一个名为“ftp_commands.txt”的文本文件,用于在FTP会话中执行命令。在该文件中,编写以下内容: ``` prompt off mput *.txt ``` 上述命令将上以“.txt”作为扩展名的所有文件。可以根据实际需求更改文件过滤器。 4. 将待上文件放置在脚本中指定的文件路径(此处为“C:\path\to\file.txt”)。 5. 完成以上步骤后,我们可以使用Windows任务计划程序来定期执行脚本。打开“任务计划程序”应用程序,并创建一个新的基本任务。在任务触发器中选择所需的执行时间和频率,并在操作中指定要运行的“upload.bat”文件。 这样,Windows系统就会按照设定的时间计划自动运行脚本文件,并将指定的文件FTP服务器上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值