shell-scripts,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}
时间: 2024-10-07 10:55:19

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

iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b

用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 相关资料和下载 首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门:https://github.com/heyuan110/BashShell?spm=5176.100239.blogcont5028.4.kFcLtR 还有关于fir指令的一

linux计划任务自动备份并ftp上传脚本

#!/bin/sh # 备份 #bak_dir=`date +%C%y%m%d%H%M` ##文件命名规则可以是时间 backup_dir=/home/IPTV4.9 ##存储备份文件路径 mkdir -p $backup_dir Ip_addr=`ifconfig \`route |grep default |awk '{print $8}'\` |grep Bcast |awk -F: '{print $2}' |awk '{print $1}'` Host_name=`hostname`

iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上

如果移动端访问不佳,可以访问我的个人博客 用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 相关资料和下载 首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门 还有关于fir指令的一些介绍可以去这里查看,传送门 第一步安装fir-cil fir-cli 使用 Ruby 构建, 无需编译, 只要

FTP上传脚本

脚本名称:uploadToFtp.sh 脚本用途:上传文件到FTP服务器 脚本参数:$1:FTP服务器的路径,$2:本地文件 #!/bin/bash FTP_USER="testfile" FTP_PASSWORD="viewt00!QAZ" FTP_URL="192.168.2.11" FILE_PATH="$1" FILE_NAME="$2" if [ "$#" != "2

脚本安装Discuz论坛(shell + Python 实现自动化安装)

实验环境 1.shell 脚本:linux centos 7 系统2.Python shell 脚本:window 系统 3.其他:python selenium 模块,谷歌浏览器, 谷歌浏览器驱动.4.discuz 链接:https://pan.baidu.com/s/1vOwN_f56wJlIzauGrFoR1Q 提取码:mijf 实验步骤 1.上传discuz包到Linux系统/opt目录下 方法一:挂载 方法二:通过Xftp软件上传 2.编写脚本package.sh (可查看上一篇博客,

脚本从windows上传到linux无法执行

在本地windows,写了个shell脚本,用sftp或其他方式上传脚本,执行脚本出现No such file or directory提示,查看脚本的编码和权限都没有问题,在linux下新建一个文件,把脚本内容拷贝进去,内容完全一摸一样,却可以执行. 原因:Windows下换行符号是"\r\n",而linux下是"\n"没有"\r",当shell脚本是在Windows下编写的时候,默认所有的换行符都是"\r\n",linux

shell 脚本编程 【上】

程序就是指令加上数据组合而成 程序编程风格: 过程式:以指令为中心,数据服务于指令 象式:以数据为中心,指令服务于数据 编程语言: 低级:汇编 高级: 编译:高级语言-->编译器-->目标代码 java,C# 解释:高级语言-->解释器-->机器代码 shell, perl, python shell程序:提供了编程能力,解释执行 shell脚本是包含一些命令或声明,并符合一定格式的文 本文件 格式如下: 首行shebang机制 #!/bin/bash #!/usr/bin/pyt

python2系列 接入阿里云oss sdk 实现上传脚本,亲测

公司图片要从原有的nfs存储上迁移到oss存储上,其实阿里云提供的很多种方式,但是作为一枚运维人员很有必要学会使用ossutil工具,当然接入阿里oss的python的sdk也是很有必要的,下面我就将我写的简单的脚本样例晒一下: #! /usr/bin/env python #! -*- coding:utf8 -*- """ aliyujn oss2 python sdk 上传测试测试!!""" from __future__ import p

第十三章、学习 Shell Scripts

1. 什么是 Shell Script 1.1 干嘛学习 shell scripts 1.2 第一支 script 的撰写与运行 1.3 撰写 shell script 的良好习惯创建 2. 简单的 shell script 练习 2.1 简单范例: 对谈式脚本, 随日期变化, 数值运算 2.2 script 的运行方式差异 (source, sh script, ./script) 3. 善用判断式 3.1 利用 test 命令的测试功能 3.2 利用判断符号 [ ] 3.3 Shell sc