shell实现自动部署两台tomcat项目Ⅱ

本次分为3个脚本, scp.sh放进第一台机器(负责传输文件), schenglee.sh放进第一台机器(自动部署), schenglee2.sh放进第二台机器(自动部署)

环境

tomcat1:  192.168.137.176

tomcat2:  192.168.137.177

脚本

scp.sh

#!/usr/bin/expect
#*************************************************************************
#         > File Name: expect.sh
#         > Author: chenglee
#         > Main : [email protected]
#         > Blog : http://www.cnblogs.com/chenglee/
#         > Created Time : 2019年01月30日 星期三 18时16分56秒
#*************************************************************************
set user root
set pass lizhenghua
set dir /home/mcdadm/apache-tomcat-9.0.14
set ip 192.168.137.177
set filen [lrange $argv 0 0]

spawn scp ${filen} ${user}@${ip}:${dir}
expect "${user}@${ip}'s password:"
send "${pass}\r"
interact

schenglee.sh

#!/bin/bash
TODAY=$(date -d 'today' +%Y-%m-%d-%S)
warname="bskm.txt"
wardir=`echo $warname | awk -F '.' '{print$1}'`
backdir="backup"
slaip=`cat bin/scp.sh | grep "192" | awk -F ' ' '{print$3}'`
sladir=`pwd`

function train(){
    echo "准备把${warname}文件传输到${slaip}"
    ./bin/scp.sh ${warname} > /dev/null 2>&1
    proce
    echo "项目重置成功!文件传输完成!(请登录${slaip}执行${sladir}下的schenglee.sh脚本)"
}
function proce(){
    i=0;
    str=""
    arr=("|" "/" "-" "\\")
    while [ $i -le 100 ]
    do
    let index=i%4
    let indexcolor=i%8
    let color=30+indexcolor
    printf "\e[0;$color;1m[%-100s][%d%%]%c\r" "$str" "$i" "${arr[$index]}"
    sleep 0.1
    let i++
    str+='='
    done
    printf "\n"
}
function mk_dir(){
    if [ -d "${backdir}" ];then
        run
    else
        mkdir ${backdir}
        run
    fi
}
function run(){
    ./bin/shutdown.sh
    proce
    cp webapps/${warname} backup/${warname}-${TODAY} && rm -rf webapps/${wardir}*
    cp ${warname} webapps/
    ./bin/startup.sh
    proce
}
function main(){
    mk_dir
    train
}
main

schenglee2.sh

#!/bin/bash
TODAY=$(date -d 'today' +%Y-%m-%d-%S)
warname="bskm.txt"
wardir=`echo $warname | awk -F '.' '{print$1}'`
backdir="backup"

function proce(){
    i=0;
    str=""
    arr=("|" "/" "-" "\\")
    while [ $i -le 100 ]
    do
    let index=i%4
    let indexcolor=i%8
    let color=30+indexcolor
    printf "\e[0;$color;1m[%-100s][%d%%]%c\r" "$str" "$i" "${arr[$index]}"
    sleep 0.1
    let i++
    str+='='
    done
    printf "\n"
}
function mk_dir(){
    if [ -d "${backdir}" ];then
        run
    else
        mkdir ${backdir}
        run
    fi
}
function run(){
    ./bin/shutdown.sh
    proce
    cp webapps/${warname} backup/${warname}-${TODAY} && rm -rf webapps/${wardir}*
    cp ${warname} webapps/
    ./bin/startup.sh
    proce
}
function main(){
    mk_dir
}
main

用法

先把scp.sh扔进tomcat的bin目录, 记得授权

然后运行schenglee.sh脚本就行, 脚本自动关闭tomcat然后备份项目包, 再把新的包放进webapps下自动启动, 需要更新的项目包放在tomcat的目录下

猜你喜欢

转载自www.cnblogs.com/chenglee/p/10341958.html