本次分为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的目录下