您的位置:首页 > 运维架构 > Linux

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

2009-05-07 13:08 357 查看
在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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: