码迷,mamicode.com
首页 > Web开发 > 详细

shell-scripts,FTP自动化上传脚本,可循环,直到上传成功为止

时间:2015-07-25 10:52:48      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:ftp自动化上传   循环上传   ftp运行错误判断   

脚本功能:

    通过定时计划任务运行该脚本,定期上传指定文件。

    之前写了这个脚本,有时候网络不稳定的时候,总是上传失败。写了循环去传,但是苦于不知道怎样去获取FTP返回的错误状态,后来度娘到可以把ftp的运行错误日志记录写到文件中,因这个点来源于分享。因此,现在把整个脚本给分享出来,提供给大家一个思路。

    通过检测这个错误日记录,并返回的状态,去循环上传指定文件,并追加脚本运行日志记录,以便于跟踪脚本运行情况。


#!/bin/bash
#upload gonet log to ftp_server
#by colin on 2015-07-23

scripts_run_log=‘/var/log/cron_scripts_run.log‘
echo "`date +%F" "%T":"%N` Script : $0 will runing..." >> ${scripts_run_log}

gonetdir=‘/data/logs/www/‘
ftp_log_dir=‘/nginxlog/testnet‘
#############################
t_month=`date +%Y%m`
t_last_hour=`date -d ‘1 hour ago‘ +%H`
t_yesterday=`date -d "yesterday" +%d`
t_today=`date +%d`
T=`echo $(date +%k) |sed ‘s/ //g‘`

#凌晨的时候,文件目录是昨天的
if [ $T -eq 0 ];then
	temp_gonetdir=${gonetdir}${t_month}/${t_yesterday}/
else
	temp_gonetdir=${gonetdir}${t_month}/${t_today}/
fi

put_log_name="yjww_${t_last_hour}.log"
ftp_err_dir="/tmp/ftp_err/"
[ -d ${ftp_err_dir} ] || mkdir -p ${ftp_err_dir}
ftp_err_log="${ftp_err_dir}ftp_temp_yjww_err.log"

#FTP自动化上传函数
send_gonet_log()
{
	ftp -i -n FTP服务器的IP地址 21 2>${ftp_err_log} << _EOF_
	user 用户名 密码
	passive
	bin
	lcd ${temp_gonetdir}
	cd  ${ftp_log_dir}
	put ${put_log_name}
	bye
_EOF_
#统计前面FTP运行输出的错误日志记录行数
log_count=`cat ${ftp_err_log}|wc -l`
[ ${log_count} -eq 0 ] && return 0 || return 1
}

##########################
#调用FTP上传函数,返回until需要的状态值
#每次睡眠120秒,总循环三次
function run_send_gonet(){
send_gonet_log
if [ $? -eq 0 ];then
	echo "`date +%F" "%T":"%N` Send : ${put_log_name} to ftp_server was successfully." >> ${scripts_run_log}
	return 0
else
	echo "`date +%F" "%T":"%N` Send : ${put_log_name} more than $x time." >> ${scripts_run_log}
	sleep 120
	return 1
fi
}

#循环3次,总共6分钟
x=1
i=1
until [ "$i" -eq 0 ];do
	[ $x -gt 3 ] && {
		echo "`date +%F" "%T":"%N` Send : ${put_log_name} to ftp_server was failed, Please check..." >> ${scripts_run_log}
		exit
	}
	run_send_gonet
	i=`echo $?`
	x=`expr $x + 1`
done

#删除FTP产生的临时错误日志文件
[ -f ${ftp_err_log} ] && rm ${ftp_err_log}
echo "`date +%F" "%T":"%N` Script : $0 done." >> ${scripts_run_log}


本文出自 “上山路十八弯” 博客,请务必保留此出处http://kongzi68.blog.51cto.com/1432619/1678236

shell-scripts,FTP自动化上传脚本,可循环,直到上传成功为止

标签:ftp自动化上传   循环上传   ftp运行错误判断   

原文地址:http://kongzi68.blog.51cto.com/1432619/1678236

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!