处理FTP成功上传的判断

本文介绍了一个用于FTP服务器文件上传的Shell脚本实现方法。该脚本能够处理文件上传过程中的多个关键步骤,包括登录FTP服务器、上传指定文件、验证上传结果及记录日志等。此外,还提供了一种检查上传文件大小一致性的方法来确认文件是否成功上传,并对日志文件进行维护。

#登录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"



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱大家369

谢谢你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值