windows伺服器和linux伺服器ftp取數指令碼

來源:互聯網
上載者:User

標籤:

linux(ip假如為11.11.0.1)從linux(ip假如為11.11.0.2)那麼需要在11.11.0.2上裝vsftp也就是ftp服務端,在11.11.0.1裝ftp用戶端,

http://download.csdn.net/detail/u012209894/9537732


#!/bin/sh########################################################################## 此即可手工執行指令碼,需要傳入執行日期,也可自動執行# ######################################################################### 機構號(需要寫死原先日期可寫死TIMETMP即可,如你需要20150202當天的資料,重跑需刪除jksj檔案夾下當天的檔案)set -eORGCODE=883000# 自動輸入前一天的日期TIMETMP=$(date -d"yesterday" +%Y%m%d)#read var#TIMETMP=$var#重跑需刪除當天檔案資料cd /home/pasdb/doload/pasdata/jksj/rm -rf $TIMETMP#系統當前日期SYSTIME=$(date '+%Y-%m-%d %H:%M:%S')NOWDATE=${SYSTIME:0:10}NOWTIME=${SYSTIME:11:8}#三十天以前的日期tendays=$(date -d"30 days ago" +%Y%m%d)# 如果格式為:2010-07-07if test "${#TIMETMP}" = 10then    YYY=${TIMETMP:0:4}    MMM=${TIMETMP:5:2}    DDD=${TIMETMP:8:9}    INDATE=$YYY$MMM$DDD# 如果輸入日期格式為:20100707else    INDATE=$TIMETMPfi# 修改日期格式為:2010-07-07YYY=${INDATE:0:4}MMM=${INDATE:4:2}DDD=${INDATE:6:7}PROCDATE=$YYY"-"$MMM"-"$DDDYEARBEGIN=$YYY"-01-01"# 前一天日期格式為:2010-05-20#DAYAGO=$(date -d "$PROCDATE -1 days" +%Y-%m-%d)#AGODATE=$(date -d "$PROCDATE -1 days" +%Y%m%d)#nMonBegDate=$(date -d "$PROCDATE" +%Y%m)"01"#nMEndLaDate=$(date -d "$nMonBegDate -1 days +1 months" +%Y%m%d)logYear=$YYYlogMonth=$MMMif [ "$PROCDATE" \< "$NOWDATE" ]then#指令碼存放目錄    DATAPATH=/home/pasdb/doload    #LOADPATH=/home/pasdb/doload/pas_load_CORE.sql    PROCPATH=/home/pasdb/doload/pas_pro_file.sh#FTP資訊:IP地址:FTPIP;使用者名稱:FTPNAME;密碼:FTPPWD;FTP目錄:FTPDATAPATH;FTP儲存檔案名稱:FTPFILE    FTPIP="11.11.0.2"    FTPNAME="sjff"    FTPPWD="sjff"    FTPDATAPATH="/home/sjff/CORE/ADD/"$INDATE    FTPFILE_CORE="CORE_"$ORGCODE"_"$INDATE"_ADD.tar.Z"#初始化標記值為0    LOADFLAG=0# 建立工作目錄    createWorkSpace()    {      if [ ! -e $DATAPATH"/pasdata" ]        then            mkdir pasdata            cd pasdata            # dbresult 存放執行結果            mkdir dbresult            # zipdata 存放ftp下載的zip資料檔案            mkdir zipdata            mkdir zipdata/sjff            mkdir zipdata/sjff"/"$INDATE            # unzipdata 存放執行當天M包解壓臨時存放目錄            mkdir unzipdata            # log 存放記錄檔            mkdir log            #CORE 存放CORE記錄檔            mkdir COREmkdir jksjmkdir jksj"/"$INDATE            #mkdir log"/CORE/"$logYear    #mkdir log"/CORE/"$logYear"/"$logMonth        else            cd $DATAPATH"/pasdata"            if [ ! -e dbresult ]            then                mkdir dbresult            fi            if [ ! -e zipdata ]            then                mkdir zipdata            fi            if [ ! -e zipdata/sjff ]            then                mkdir zipdata/sjff            fi            if [ ! -e zipdata/sjff/$INDATE ]            then                mkdir zipdata/sjff/$INDATE            fi            if [ ! -e unzipdata ]            then                mkdir unzipdata            fi            if [ ! -e log ]            then                mkdir log            fiif [ ! -e jksj/$INDATE ]thenmkdir jksj/$INDATEfi       fi        DATAPATH=$DATAPATH"/pasdata"    }#建立程式實現功能所需的目錄空間    createWorkSpace $DATAPATH    LOGFILE=$DATAPATH"/log/CORE_"$INDATE".log"    DBRESULT=$DATAPATH"/dbresult"    DAILY_BATCH_LAST_DATE_CORE=$DBRESULT"/daily_batch_last_date_core"    DAILY_BATCH_BEGIN_STATE_CORE=$DBRESULT"/daily_batch_begin_state_core"    SQL_RESULT_CORE_LOAD=$DBRESULT"/sql_result_core_load"    if [ ! -e $DAILY_BATCH_LAST_DATE_CORE ]    then        touch $DAILY_BATCH_LAST_DATE_CORE    fi    if [ ! -e $DAILY_BATCH_BEGIN_STATE_CORE ]    then        touch $DAILY_BATCH_BEGIN_STATE_CORE    fi    if [ ! -e $SQL_RESULT_CORE_LOAD ]    then        touch $SQL_RESULT_CORE_LOAD    fi#寫日誌     WriteLog()    {        if [ ! -e $LOGFILE ]        then            touch $LOGFILE        fi        if [ "$1" != "" ]        then            echo $(date '+%Y-%m-%d %H:%M:%S')"=======>"$1 | tee -a $LOGFILE        fi    }# ftp download data/usr/bin/ftp -n<<!open $FTPIPuser $FTPNAME $FTPPWDbinaryprompt offcd $FTPDATAPATHlcd $DATAPATH"/zipdata/sjff/"$INDATEmget "$FTPFILE_CORE"closebye!cd $DATAPATH"/zipdata/sjff/"$INDATEWriteLog "download ftp file is end."if [ -f "$FTPFILE_TPDM" ]then#FILESIZE=$(ls -l $FTPFILE_CORE|awk '{printf $5}')#FILESIZE=$(awk BEGIN'{printf "%.3f", '$FILESIZE'/(1024*1024)}')#cd $DATAPATH"/pasdata/zipdata/sjff/"$INDATE#chmod 777 "$INDATE"tar -zxvf $FTPFILE_CORE -C /home/pasdb/doload/pasdata/unzipdataWriteLog "download ftp file is success and tar file to unzipdata success"mv "/home/pasdb/doload/pasdata/unzipdata/CORE_BDFMHQAA_"$INDATE"_ADD_883.del" /home/pasdb/doload/pasdata/jksj"/"$INDATE/BDFMHQAA.DELWriteLog "copy required file to jksj success"#驗證檔案是否齊全cd /home/pasdb/doload/pasdata/jksj"/"$INDATEif [ 1 != $(ls -A | wc -l) ]thenWriteLog "today jksj file incomplete data"cd /home/pasdb/doload/pasdata/jksjrm -rf $INDATEelsetouch ok.datWriteLog "today jksj file complete data and create ok.dat file"ficd /home/pasdb/doload/pasdata/unzipdatarm -f *.delWriteLog "delete unzipdata file successfully"cd /home/pasdb/doload/pasdata/logrm -f "CORE_"$tendays".log"WriteLog "remove ten days before log file successfully"cd /home/pasdb/doload/pasdata/zipdata/sjffrm -rf $tendaysWriteLog "remove ten days before sjff file successfully"LOADFLAG=1elseWriteLog "download ftp file is fail,please check the ftp file is exist?"LOADFLAG=0fifi       

linux(ip假如為11.11.0.1)從windows(ip假如為11.11.0.2)那麼需要在11.11.0.2上裝ftp服務端,在11.11.0.1裝ftp用戶端,如果取檔案夾則用下面的方法wget,取檔案用上面的方法。

#!/bin/sh########################################################################## 指令碼說明:績效考核系統日終指令檔# 此即可手工執行指令碼,需要傳入執行日期,也可自動執行##########################################################################(需要寫死原先日期可寫死TIMETMP即可,如你需要20150202當天的資料,重跑需刪除jksj檔案夾下當天的檔案)set -e#自動擷取昨天的日期TIMETMP=$(date -d"yesterday" +%Y%m%d)#手工輸入昨天日期#read var#TIMETMP=$var#當天重跑擷取昨天檔案 需刪除昨天檔案資料 if [ ! -e /xxpas/doload/jksj/ ]        then            mkdir -p /xxpas/doload/jksj/      else      cd /xxpas/doload/jksj/      rm -rf $TIMETMP        fi         #系統當前日期SYSTIME=$(date '+%Y-%m-%d %H:%M:%S')NOWDATE=${SYSTIME:0:10}#NOWTIME=${SYSTIME:11:8}#三十天以前的日期tendays=$(date -d"30 days ago" +%Y%m%d)# 如果格式為:2010-07-07if test "${#TIMETMP}" = 10then    YYY=${TIMETMP:0:4}    MMM=${TIMETMP:5:2}    DDD=${TIMETMP:8:9}    INDATE=$YYY$MMM$DDD# 如果輸入日期格式為:20100707else    INDATE=$TIMETMPfi# 修改日期格式為:2010-07-07YYY=${INDATE:0:4}MMM=${INDATE:4:2}DDD=${INDATE:6:7}PROCDATE=$YYY"-"$MMM"-"$DDDYEARBEGIN=$YYY"-01-01"if [ "$PROCDATE" \< "$NOWDATE" ]then#指令碼存放目錄    DATAPATH=/xxpas/doload#初始化標記值為0    LOADFLAG=0# 建立工作目錄    createWorkSpace()    {    if [ ! -e $DATAPATH"/jksj" ]        then            mkdir jksj            # log 存放記錄檔            mkdir log        else            cd $DATAPATH"/jksj"            if [ ! -e log ]            then                mkdir log            fi    fi        DATAPATH=$DATAPATH"/jksj"    }#建立程式實現功能所需的目錄空間    createWorkSpace $DATAPATH    LOGFILE=$DATAPATH"/log/xxjk_"$INDATE".log"#寫日誌     WriteLog()    {        if [ ! -e $LOGFILE ]        then            touch $LOGFILE        fi        if [ "$1" != "" ]        then            echo $(date '+%Y-%m-%d %H:%M:%S')"=======>"$1 | tee -a $LOGFILE        fi    }# ftp download data ip 使用者名稱 密碼 自行更改 取前一天日期的檔案夾wget -r -nH -P/xxpas/doload/jksj ftp://11.11.0.2"/"$INDATE  --ftp-user=admini1 --ftp-password=123cd $DATAPATH"/"$INDATEWriteLog "download ftp file is end."#tar -zxvf $FTPFILE_CORE -C /xxpas/doload/jksj"/"$INDATE#gunzip -n $FTPFILE_COREWriteLog "download ftp file is success and tar file to jksj success"#刪除10天前檔案cd /xxpas/doload/jksj/logrm -f "xxjk_"$tendays".log"WriteLog "remove ten days before log file successfully"cd /xxpas/doload/jksjrm -rf $tendaysWriteLog "remove ten days before sjff file successfully"LOADFLAG=1elseWriteLog "download ftp file is fail,please check the ftp file is exist?"LOADFLAG=0fi

linux上使用手動輸入日期迴圈取資料

#!/bin/sh######################################################################### 此即可手工執行指令碼,需要傳入執行日期,也可自動執行########################################################################## 機構號(需要寫死原先日期可寫死TIMETMP即可,如你需要20150202當天的資料,重跑需刪除jksj檔案夾下當天的檔案)set -eORGCODE=883000# 自動輸入前一天的日期#TIMETMP=$(date -d"yesterday" +%Y%m%d)#liulei 20160531 add beginread varread endvardatebeg=$vardateend=$endvarbeg_s=`date -d "$datebeg" +%s`end_s=`date -d "$dateend" +%s`while [ "$beg_s" -le "$end_s" ]      doTIMETMP=$beg_s   #重跑需刪除當天檔案資料cd /home/pasdb/doload/addpasdata/jksj/rm -rf $TIMETMP#系統當前日期SYSTIME=$(date '+%Y-%m-%d %H:%M:%S')NOWDATE=${SYSTIME:0:10}NOWTIME=${SYSTIME:11:8}#十天以前的日期tendays=$(date -d"30 days ago" +%Y%m%d)# 如果格式為:2010-07-07if test "${#TIMETMP}" = 10then    YYY=${TIMETMP:0:4}    MMM=${TIMETMP:5:2}    DDD=${TIMETMP:8:9}    INDATE=$YYY$MMM$DDD# 如果輸入日期格式為:20100707else    INDATE=$TIMETMPfi# 修改日期格式為:2010-07-07YYY=${INDATE:0:4}MMM=${INDATE:4:2}DDD=${INDATE:6:7}PROCDATE=$YYY"-"$MMM"-"$DDDYEARBEGIN=$YYY"-01-01"# 前一天日期格式為:2010-05-20#DAYAGO=$(date -d "$PROCDATE -1 days" +%Y-%m-%d)#AGODATE=$(date -d "$PROCDATE -1 days" +%Y%m%d)#nMonBegDate=$(date -d "$PROCDATE" +%Y%m)"01"#nMEndLaDate=$(date -d "$nMonBegDate -1 days +1 months" +%Y%m%d)#logYear=$YYY#logMonth=$MMMif [ "$PROCDATE" \< "$NOWDATE" ]then#指令碼存放目錄    DATAPATH=/home/pasdb/doload    #LOADPATH=/home/pasdb/doload/pas_load_CORE.sql    PROCPATH=/home/pasdb/doload/pas_pro_file.sh#FTP資訊:IP地址:FTPIP;使用者名稱:FTPNAME;密碼:FTPPWD;FTP目錄:FTPDATAPATH;FTP儲存檔案名稱:FTPFILE    FTPIP="11.11.0.2"    FTPNAME="sjff"    FTPPWD="sjff"    FTPDATAPATH="/home/sjff/CORE/ADD/"$INDATE    FTPFILE_CORE="CORE_"$ORGCODE"_"$INDATE"_ADD.tar.Z"#初始化標記值為0    LOADFLAG=0# 建立工作目錄    createWorkSpace()    {      if [ ! -e $DATAPATH"/addpasdata" ]        then            mkdir addpasdata            cd addpasdata            # dbresult 存放執行結果            mkdir dbresult            # zipdata 存放ftp下載的zip資料檔案            mkdir zipdata            mkdir zipdata/sjff            mkdir zipdata/sjff"/"$INDATE            # unzipdata 存放執行當天M包解壓臨時存放目錄            mkdir unzipdata            # log 存放記錄檔            mkdir log            #CORE 存放CORE記錄檔            mkdir COREmkdir jksjmkdir jksj"/"$INDATE            #mkdir log"/CORE/"$logYear    #mkdir log"/CORE/"$logYear"/"$logMonth        else            cd $DATAPATH"/addpasdata"            if [ ! -e dbresult ]            then                mkdir dbresult            fi            if [ ! -e zipdata ]            then                mkdir zipdata            fi            if [ ! -e zipdata/sjff ]            then                mkdir zipdata/sjff            fi            if [ ! -e zipdata/sjff/$INDATE ]            then                mkdir zipdata/sjff/$INDATE            fi            if [ ! -e unzipdata ]            then                mkdir unzipdata            fi            if [ ! -e log ]            then                mkdir log            fiif [ ! -e jksj/$INDATE ]thenmkdir jksj/$INDATEfi       fi        DATAPATH=$DATAPATH"/addpasdata"    }#建立程式實現功能所需的目錄空間    createWorkSpace $DATAPATH    LOGFILE=$DATAPATH"/log/CORE_"$INDATE".log"    DBRESULT=$DATAPATH"/dbresult"    DAILY_BATCH_LAST_DATE_CORE=$DBRESULT"/daily_batch_last_date_core"    DAILY_BATCH_BEGIN_STATE_CORE=$DBRESULT"/daily_batch_begin_state_core"    SQL_RESULT_CORE_LOAD=$DBRESULT"/sql_result_core_load"    if [ ! -e $DAILY_BATCH_LAST_DATE_CORE ]    then        touch $DAILY_BATCH_LAST_DATE_CORE    fi    if [ ! -e $DAILY_BATCH_BEGIN_STATE_CORE ]    then        touch $DAILY_BATCH_BEGIN_STATE_CORE    fi    if [ ! -e $SQL_RESULT_CORE_LOAD ]    then        touch $SQL_RESULT_CORE_LOAD    fi#寫日誌     WriteLog()    {        if [ ! -e $LOGFILE ]        then            touch $LOGFILE        fi        if [ "$1" != "" ]        then            echo $(date '+%Y-%m-%d %H:%M:%S')"=======>"$1 | tee -a $LOGFILE        fi    }# ftp download data/usr/bin/ftp -n<<!open $FTPIPuser $FTPNAME $FTPPWDbinaryprompt offcd $FTPDATAPATHlcd $DATAPATH"/zipdata/sjff/"$INDATEmget "$FTPFILE_CORE"closebye!cd $DATAPATH"/zipdata/sjff/"$INDATEWriteLog "download ftp file is end."if [ -f "$FTPFILE_TPDM" ]thentar -zxvf $FTPFILE_CORE -C /home/pasdb/doload/addpasdata/unzipdataWriteLog "download ftp file is success and tar file to unzipdata success"mv "/home/pasdb/doload/addpasdata/unzipdata/CORE_BWFMATMD_"$INDATE"_ADD_883.del" /home/pasdb/doload/addpasdata/jksj"/"$INDATE/BWFMATMD.DELWriteLog "copy required file to jksj success"#驗證檔案是否齊全cd /home/pasdb/doload/addpasdata/jksj"/"$INDATEif [ 1 != $(ls -A | wc -l) ]thenWriteLog "today jksj file incomplete data"cd /home/pasdb/doload/addpasdata/jksjrm -rf $INDATEelsetouch ok.datWriteLog "today jksj file complete data and create ok.dat file"ficd /home/pasdb/doload/addpasdata/unzipdatarm -f *.delWriteLog "delete unzipdata file successfully"cd /home/pasdb/doload/addpasdata/logrm -f "CORE_"$tendays".log"WriteLog "remove ten days before log file successfully"cd /home/pasdb/doload/addpasdata/zipdata/sjffrm -rf $tendaysWriteLog "remove ten days before sjff file successfully"LOADFLAG=1elseWriteLog "download ftp file is fail,please check the ftp file is exist?"LOADFLAG=0fifi beg_s=$((beg_s+86400))done       
如果是windwos上迴圈取資料就使用,目前只能想到日期範圍在一個月以內的,因為windowns上的日期date算超出月外的就比較繁瑣了

@echo on::------------------------------------------------------------------:: example :call test.bat 20160101 20160110::------------------------------------------------------------------setlocal enabledelayedexpansionset  startdate=%1set  enddate=%2set FTP_SERVER=11.11.0.2set FTP_USER=admin1set FTP_PASSWORD=admin1echo 當前輸入日期為1:%startdate%rem pauseset dy=%startdate:~,4%set dm=%startdate:~4,2%set dd=%startdate:~6,2%echo 當前輸入日期為:%dy%%dm%%dd%set StartTime=%Time:~0,2%:%Time:~3,2%:%Time:~6,2%rem pauseset PAS_DATE=%dy%%dm%%dd%:startD:set PAS_ROOT=D:\DATA\JKSJif not exist %PAS_ROOT% mkdir %PAS_ROOT%set FTP_CMD_FILE=%PAS_ROOT%\ftpcmd.txtset PAS_DATA_DIR=%PAS_ROOT%\%PAS_DATE%if not exist %PAS_DATA_DIR% mkdir %PAS_DATA_DIR%echo 檔案夾地址%PAS_DATA_DIR%rem 從FTP擷取資料echo open %FTP_SERVER%>%FTP_CMD_FILE%echo %FTP_USER%>>%FTP_CMD_FILE%echo %FTP_PASSWORD%>>%FTP_CMD_FILE%echo ascii>>%FTP_CMD_FILE%echo literal pasv>>%FTP_CMD_FILE%echo prompt >>%FTP_CMD_FILE%echo cd %PAS_DATE%>>%FTP_CMD_FILE%echo lcd %PAS_DATE%>>%FTP_CMD_FILE%echo mget *.*>>%FTP_CMD_FILE%echo close>>%FTP_CMD_FILE%echo bye>>%FTP_CMD_FILE%ftp -s:%FTP_CMD_FILE%c:echo 解壓開始 >>%PAS_DATA_DIR%\GetOK.datC:\"Program Files"\WinRAR\winrar.exe e  %PAS_DATA_DIR%\*.zip %PAS_DATA_DIR% echo 解壓完成 >>%PAS_DATA_DIR%\GetOK.datset EndTime=%Time:~0,2%:%Time:~3,2%:%Time:~6,2%echo FTP下載資料開始時間:%StartTime%,結束時間:%EndTime%echo FTP下載資料開始時間:%StartTime%,結束時間:%EndTime% >>%PAS_DATA_DIR%\GetOK.datD:cd %PAS_DATA_DIR% if exist *.ok ( echo %PAS_DATE%>>%PAS_DATA_DIR%\JKSJOK.dat)echo 存在>>%PAS_DATA_DIR%\GetOK.datset /a "PAS_DATE+=1"echo now date:%PAS_DATE%echo now enddate:%enddate%rem pauseif "%enddate%" neq "%PAS_DATE%" goto startexit




windows伺服器和linux伺服器ftp取數指令碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.