ftp上传文件脚本,若本地上传文件路径下没有文件则会说为空,上传成功后则会删除文件,失败则不作为
说明:$1:本地上传下载文件路径
$2:服务器IP
$3:用户名
$4:密码
#/bin/bash
DIRCTORY=$1
is_empty_dir(){
return `ls -A $DIRCTORY | wc -w`
}
put_file(){
exec 6>&1 1>$1/../tmp.txt
ftp -nv<<-EOF
open $2
user $3 $4
passive
binary
hash
cd UP/
lcd $DIRCTORY
prompt
mput *
close
bye
EOF
exec 1>&6
exec 6>&-
if grep -q "Transfer complete" $1/../tmp.txt;then
echo "commit to ftp successfully" >> $1/../log.txt
rm -rf $DIRCTORY*.*
else
echo "commit to ftp failure!" >> $1/../log.txt
fi
rm -rf $1/../tmp.txt
sleep 60
echo "commit to ftp successfully"
}
#上传文件
while true
do
echo `date +%y%m%d%H%M%S`>> $1/../log.txt
if is_empty_dir $DIRCTORY
then
echo "$DIRCTORY NO files" >> $1/../log.txt
sleep 60
else
put_file
fi
done
FTP下载含指定字符串的文件,下载成功后,ftp上删除文件
get_file(){
exec 6>&1 1>$1/tmp.txt
ftp -nv<<-EOF
open $2
user $3 $4
passive
binary
cd DOWN/
lcd $1
hash
prompt off
mget voice_*.mp3
close
bye
EOF
exec 1>&6
exec 6>&-
if grep -q "Transfer complete" $1/tmp.txt;then
ftp -nv<<-EOF
open $2
user $3 $4
passive
binary
cd DOWN/
hash
prompt off
mdelete voice_*.mp3
close
bye
EOF
echo "get file from ftp successfully" >> $1/log.txt
else
echo "get file from ftp failure!" >> $1/log.txt
fi
rm -rf $1/tmp.txt
echo "download from ftp successfully"
}
echo `date +%y%m%d%H%M%S`>> $1/log.txt
get_file