在Linux中通过FTP方式上传文件

来源:互联网 发布:北京java专业培训 编辑:程序博客网 时间:2024/05/19 19:56

在LINUX中通过FTP方式上传文件或下载文件

 

以下是简单版本

[fengsy@ctihost len.shell]$ cat Leave
#Copy File From FtpServ To Local
#Author : Feng ShuYan
leave()
{
        #local FILE
        echo $*
        File_Ls=`ls -l $4 |awk '{print $9}'`
        sleep 2
        for File_Name in $File_Ls ;do
                if [ -f File_Name ];then
                        continue
                else
                        File_List=$File_List" "`echo $File_Name|awk -F, '{print $1}'`
                fi
        done
        echo $File_List
        echo $File_List > File_List.tmp
        echo open $1 > ftpopt.tmp
        echo user $2 $3 >> ftpopt.tmp
        echo cd $5 >> ftpopt.tmp
        echo lcd $4 >> ftpopt.tmp
        for File_Name in $File_List;do
                echo put $File_Name $File_Name.tmp >>ftpopt.tmp
                echo rename $File_Name.tmp $File_Name >>ftpopt.tmp
        done
        echo bye >> ftpopt.tmp
        cat ftpopt.tmp | ftp -n -v
        Error=$?
        if [ $? -ne 0 ];then
                echo "File $FILE transfer(FTP) fail!!!! Please check if system $1 is normal!"
                return Error
        fi
}
if [ $# -ne 5 ]; then
        echo "Usage:leave <IpAddr> <User> <Pass> <SrcDir> <DestDir>"
else
  leave $1 $2 $3 $4 $5
fi

 

以下是完整版本

[pickup@ZZJK_X3650_2 bin]$ cat Dispatch
# FILE: Dispatch
# Author: Yang GuangLiang
# Function: Ftp Data file for IASP!
#

dispatched_file_list()
{
        TDATE=`date +%Y%m%d`
        HOUR=`date +%H`
        echo open $1 >dipatch_data.tmp
        echo user $2 $3 >>dipatch_data.tmp
        echo cd $4 >>dipatch_data.tmp
        echo mdel *.tmp >>dipatch_data.tmp
        echo mdel *.temp >>dipatch_data.tmp
        if [ "$DISPATCH_ALL" = "1" ]; then
                echo "nlist * dispatched_lst.tmp" >>dipatch_data.tmp
        else
                echo nlist *"$TDATE"* dispatched_lst.tmp >>dipatch_data.tmp
                if [ $HOUR -lt 4 ]; then
                        LDATE=`cat yesterday.txt`
                     echo nlist *"$LDATE"* dispatched_lst1.tmp >>dipatch_data.tmp
              else
                        if [ $HOUR -gt 21 ]; then
                                echo $TDATE > yesterday.txt
                        fi
                fi
        fi

        echo bye >>dipatch_data.tmp

        cat dipatch_data.tmp | ftp -n -v -i
        ERROR_NO=$?
        if [ $ERROR_NO -ne 0 ]; then
                echo "Get dispatched file list fail!!!! Please check if system $1 is normal!"
                return $ERROR_NO
        fi

        rm dipatch_data.tmp
        FILE_LST=`cat dispatched_lst.tmp`
        rm dispatched_lst.tmp
        if [ -e dispatched_lst1.tmp ];then
                FILE_LST="$FILE_LST "`cat dispatched_lst1.tmp`
                rm dispatched_lst1.tmp
        fi
}

dispatch_data()
{
        local FILE

        echo open $1 > dipatch_data.tmp
        echo user $2 $3 >> dipatch_data.tmp
        echo cd $5 >> dipatch_data.tmp
        echo lcd $4 >> dipatch_data.tmp
        for FILE in $FILE_LST; do
                echo put $FILE $FILE.tmp >> dipatch_data.tmp
                echo rename $FILE.tmp $FILE >> dipatch_data.tmp
        done
        echo bye >> dipatch_data.tmp
        cat dipatch_data.tmp | ftp -n -v
        ERROR_NO=$?
        cp dipatch_data.tmp aa
        rm dipatch_data.tmp
        if [ $ERROR_NO -ne 0 ]; then
                echo "File $FILE transfer(FTP) fail!!!! Please check if system $1 is normal!"
                return $ERROR_NO
        fi
}

put_file_list()
{
        local CUR_PATH

        CUR_PATH=`pwd`

        cd $1

        FILE_LIST1=`ls -l|grep -v ".tmp" |grep -v "*.temp"|awk '{print $5","$9}'`
        sleep 2
        FILE_LIST2=`ls -l|grep -v ".tmp" |grep -v "*.temp"|awk '{print $5","$9}'`
        FILE_LIST=""
        for FILE in $FILE_LIST1; do
                FOUND=`echo $FILE_LIST2|grep $FILE`
                if [ "$FOUND" = "" ]; then
                        echo Not found $FILE
                else
                        FILE_SIZE=`echo $FILE|awk -F, '{print $1}'`
                        if [ ! "$FILE_SZIE" = "0" ]; then
                                FILE_LST=$FILE_LST" "`echo $FILE|awk -F, '{print $2}'`
                        fi
                fi
        done

#       FILE_LST=`ls`

        cd $CUR_PATH
}

dispatch()
{
        if [ $# -ne 5 ]; then
                echo "Usage: Dispatch <Server IP> <User> <Passwd> <LocalDir> <RemoteDir>"
                return 1
        fi

        if [ ! -d $4 ]; then
                echo LocalDir $4 does not exist!!!
                return 1
        fi

        echo
        echo Make put file list ......
        put_file_list $4
        echo end.
        if [ "$FILE_LST" = "" ]; then
                echo No file to dispatch!!!
                return 1
        fi

        echo Put file list: $FILE_LST
        echo
        echo Dispatch data file ......
        dispatch_data $1 $2 $3 $4 $5
        echo end.

        echo
        echo Make dispatched file list ......
        dispatched_file_list $1 $2 $3 $5
        echo end.
        if [ "$FILE_LST" = "" ]; then
                echo No file dispatched!!!
                return 1
        fi

        echo Dispatched file list: $FILE_LST
        echo
        echo Delete dispatched file ......
        CUR_PATH=`pwd`
        echo local path $4
        echo delete file list: $FILE_LST
        cd $4
        pwd
        rm $FILE_LST
        cd $CUR_PATH
        echo end.
        return 0
}

原创粉丝点击