Shell程序文件上传以及自动备份部署脚本

DMZ机器程序文件上传到服务器指定目录脚本

#!/bin/bash
#author Pine Chown
#任务分发脚本
#2017-08-25

instance1=gcharging1-inside
deploy_file=gcharging.zip
TIME=`date +%F`
timestamp=`date +%Y%m%d%H%M%S`
root_dir=/usr/deploy/gcharging/war
patch_dir=${root_dir}/patch/
back_dir=${root_dir}/backup
log=${root_dir}/log
remote_patch=/home/charging/patch
remote_backup=${remote_patch}/backup
remote_log=${remote_patch}/log
patch_script=gcharging_deploy.sh
patch_commond1=${instance1}:${remote_patch}

# 检查文件是否存在
function check(){
	ls -l|grep ${deploy_file}
	r=$?
	if [ $r == 1 ]; then
        echo "file not exist."
        exit 1
	elif [ $r == 0 ]; then
		echo "file exist."
	fi
}

#任务分发
function distrube(){
	echo "************** start copy file to first app *********************" >> ${log}/gcharging.log
	echo "************** start copy file to first app *********************"
	scp ${deploy_file} ${patch_commond1}
	echo "************** end copy file to app *********************"
	echo "************** end copy file to app *********************" >> ${log}/gcharging.log
	sleep 5s
	
	if [[ $? -eq 0 ]]; then
		echo "upgrade app success"
		echo "upgrade app success" >> ${log}/gcharging.log
	else
		echo "upgrade app failed"
		echo "upgrade app failed" >> ${log}/gcharging.log
		exit 2
	fi
}

#移除目录
function backup(){
	mv ${deploy_file} ${back_dir}
}

#部署
function execute(){
	echo $1
	ssh $1<<EOF
		cd ${remote_patch}
		sh ${patch_script}
EOF
}

main()
{
	if [[ ! -d ${back_dir} ]]; then
		mkdir -p ${back_dir}
	fi
	
	if [[ ! -d ${log} ]]; then
		mkdir -p ${log}
		touch ${log}/gcharging.log
	fi
	
	
	echo "*********** start check file ********************"
	check
	
	if [[ $? -ne 0 ]]; then
		echo "check app zip file not exist"
		echo "check app zip file not exist" >> ${log}/gcharging.log
		exit 3
	fi
	
	echo "*********** end check file ********************"
	
	echo "*********** start distrube app ********************"
	distrube
	echo "*********** end distrube app ********************"
	
	echo "*********** start backup app ********************"
	backup
	echo "*********** end backup app ********************"
	
	echo "start deploy first app"
	execute ${instance1}
	echo "end deploy first app"
	
	sleep 10s
}
#所有参数
main "$@"
echo "exec main success : $?"
exit $?

上传完成!!!程序自动备份部署启动应用脚本

#!/bin/bash
#author Pine Chown
#2017-08-25

deploy_file=gcharging.zip
deploy_dir=gcharging
TIME=`date +%F`
timestamp=`date +%Y%m%d%H%M%S`
target_dir=/usr/java/tomcat/apache-tomcat-8.5.16/webapps
bin_dir=/usr/java/tomcat/apache-tomcat-8.5.16/bin
patch=/home/charging/patch
backup_dir=${patch}/backup
log=${patch}/log

#解压目录
function unpack(){
	echo "unpack deploy file start ..."
	ls -l|grep ${deploy_file}
	r=$?
	if [ $r == 1 ]; then
        echo "file not exist."
        exit 1
	elif [ $r == 0 ]; then
		echo "file exist."
		unzip ${deploy_file}
	fi
}

#检查应用
function checkApp(){
	echo "start check app..."
	if [[ ! -d ${log} ]]
	then
		mkdir -p ${log}
	fi
	touch ${log}/gcharging.log
	pid=`ps -ef | grep ${bin_dir} | grep -v grep |awk '{print $2}'`
	echo "start check app pid : ${pid}..." >> ${log}/gcharging.log
	ps -ef | grep ${bin_dir} | grep -v grep |awk '{print $2}' | xargs kill -9
	echo "end check app..."
}

#备份应用
function backup(){
	echo "start backup application dir."
	echo "start backup application dir." >> ${log}/gcharging.log

	cd ${target_dir}
	tar -czvf ${backup_dir}/gcharging-$TIME.tar.gz gcharging 2>&1 1>> ${log}/gcharging.log
	echo "end backup application dir." >> ${log}/gcharging.log
	echo "end backup application dir."
	if [ 0 -ne $? ]; then
		echo backup file failed.
		exit 1
	fi
}

#升级
function upgrade(){
	echo "************** start copy file to app *********************" >> ${log}/gcharging.log
	echo "************** start copy file to app *********************"
	cp -r ${patch}/gcharging/. ${target_dir}/gcharging
	echo "************** end cp file to app *********************"
	echo "************** end cp file to app *********************" >> ${log}/gcharging.log
	if [[ $? -eq 0 ]]; then
		echo "upgrade app success"
		echo "upgrade app success" >> ${log}/gcharging.log
	else
		echo "upgrade app failed"
		echo "upgrade app failed" >> ${log}/gcharging.log
		exit 2
	fi
}

#重启
function restart(){
	sh ${bin_dir}/startup.sh
	if [ $? -eq 0 ]; then
		echo "restart app success";
	fi
}

#移除目录
function remove(){
	mv ${patch}/${deploy_file} ${patch}/${TIME}
	rm -rf ${patch}/${deploy_dir}
}

main()
{
	if [[ ! -d ${backup_dir} ]]; then
		mkdir -p ${backup_dir}
	fi
	
	if [[ ! -d ${log} ]]; then
		mkdir -p ${log}
		touch ${log}/gcharging.log
	fi
	
	if [[ ! -d "${patch}/${TIME}" ]]; then
		mkdir -p ${patch}/${TIME}
	fi
	
	echo "*********** start unpack app ********************"
	unpack
	
	if [[ $? -ne 0 ]]; then
		echo "unpack app failed"
		echo "unpack app failed" >> ${log}/gcharging.log
		exit 3
	fi
	
	echo "*********** end unpack app ********************"
	
	echo "*********** start check app ********************"
	checkApp
	echo "*********** end check app ********************"
	
	echo "*********** start backup app ********************"
	backup
	
	if [[ $? -ne 0 ]]; then
		echo "unpack app failed"
		echo "unpack app failed" >> ${log}/gcharging.log
		exit 4
	fi
	
	echo "*********** end backup app ********************"
	
	echo "*********** start upgrade app ********************"
	upgrade
	
	if [[ $? -ne 0 ]]; then
		echo "unpack app failed"
		echo "unpack app failed" >> ${log}/gcharging.log
		exit 5
	fi
	echo "*********** end upgrade app ********************"
	
	echo "*********** start restart app ... ********************"
	restart
	echo "*********** end restart app ********************"
	
	echo "*********** start remove app ... ********************"
	remove
	echo "*********** end remove app ********************"
}
#所有参数
main "$@"
echo "exec main success : $?"
exit $?

猜你喜欢

转载自blog.csdn.net/u012397222/article/details/84848760