處理FTP成功上傳的判斷

來源:互聯網
上載者:User

標籤:ftp shell   指令碼   


#登入FTP伺服器擷取指定檔案
#$1:伺服器位址
#$2:帳戶
#$3:密碼
#$4:檔案路徑名
#$5:本地檔案路徑名
#$6:本地檔案名稱

#判斷ftp上傳結果:
#擷取上傳後的遠程檔案大小重新導向在本地檔案tmp,與本地檔案大小比較,相同為上傳成功,最後刪除本地記錄tmp;
#判斷外部調用函數(如system)執行結果:
#執行成功返回為上傳的結果:0,執行失敗為返回指令碼內執行結果或系統調用結果:非0,避免了外部調用一直返回成功:0;
#日誌修改:
#上傳後緊接著寫日誌(追加寫),另外ftp日誌大於100M則清空。


########################################################################

get_file()
{
    #echo "$1 $2 $3 $4 $5 $6"
GF_HOST=$1
GF_USER=$2
GF_PASS=$3
GF_DATPATH=$4
GF_LOCPATH=$5
GF_SRCFILE=$6
#上傳檔案   
    ftp -in $GF_HOST >>ftp.log<<- EOF
quote USER $GF_USER
quote PASS $GF_PASS
bin
cd $GF_DATPATH
lcd $GF_LOCPATH
mput $GF_SRCFILE
    dir $GF_DATPATH/$GF_SRCFILE tmp
quit
EOF
    
    FTPSIZE=`cat $GF_LOCPATH/tmp |sed -n ‘/‘$GF_SRCFILE‘/p‘ |awk ‘{print $5}‘`
    LOCALSIZE=`ls -l $GF_LOCPATH/$GF_SRCFILE |awk ‘{print $5}‘`
    #echo $FTPSIZE
    #echo $LOCALSIZE
    
    if [ "$FTPSIZE" != "" ] && [ "$FTPSIZE" == "$LOCALSIZE" ]; then
    RETCODE=0
    else
    RETCODE=125
    fi
    
    rm -rf $GF_LOCPATH/tmp
    
1> /dev/null
2> /dev/null
    #return $?
    return $RETCODE
}
#########################################################################################################################

get_log_line()
{
    GLL_TIME=`date "+%Y-%m-%d %X"`
    #GLL_PATH=`pwd` ‘/‘ `$FILENAME`
    RESULT=$1
    if [ "$RESULT" == 0 ]
    then
        STR_RESULT="成功!"
    else
        STR_RESULT="失敗!"
    fi
    echo "$GLL_TIME| 上傳 | 本地檔案:$2: $3 | 到 | 目標主機:$4:$5 | $STR_RESULT" >>ftp.log
}


clear_ftplog()
{
    FTPLOGSIZE=`du -m ftp.log |awk ‘{print $1}‘ ||cut -f 1 -d "M" | cut -f 1 -d "."`
    if [ $FTPLOGSIZE -gt 100 ]; then
        echo "">ftp.log
    fi
}


#####################################################################################################################

clear_ftplog "100"

HOST=""
USER=""
PASS=""
DATPATH=""
LOCPATH="l"
SRCFILE=""
get_file "$HOST"  "$USER"  "$PASS"  "$DATPATH"  "$LOCPATH"  "$SRCFILE"
get_log_line "$?"  "$LOCPATH"  "$SRCFILE"  "$HOST"  "$DATPATH"



處理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.