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 $?