本次分为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 : chengkenlee@sina.com
# > 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的目录下

shell实现自动部署两台tomcat项目Ⅱ的更多相关文章

  1. shell实现自动部署两台tomcat项目+备份

    就做个记录吧, 其实也没啥好说的. 主机 #!/bin/bash TODAY=$(date -d 'today' +%Y-%m-%d-%S) MIP="192.168.180.24" ...

  2. 同一个服务器部署两个Tomcat并用Nginx实现反向代理

    需求场景:由于服务器只有80端口可供外网访问,但需要部署两台tomcat来运行两个不同的项目,所以选择了nginx做反向代理 一个upstream tomcat_server对应一个  locatio ...

  3. 如何在同一台服务器上部署两个tomcat

    因为测试的需要,有时我们必须在同一个服务器上部署两个tomcat,然后去做应用的部署,那么很多同学可能会觉得比较为难,找的资料也比较的不齐全,那么今天华华就来给大家讲讲如何部署2个tomcat,并能够 ...

  4. maven自动部署到远程tomcat教程

    使用maven的自动部署功能可以很方便的将maven工程自动部署到远程tomcat服务器,节省了大量时间. 本文章适用于tomcat的7.x ,8.x, 9.x版本. 下面是自动部的步骤 1,首先,配 ...

  5. Maven入门示例(3):自动部署至外部Tomcat

    Maven入门示例(3):自动部署至外部Tomcat 博客分类:  maven 2012原创   Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...

  6. linux机器上部署多台Tomcat

    在Linux机器上部署多台Tomcat, 我部署的是Tomcat8,只需要一步,即避免端口号冲突. 在解压后的tomcat目录下,修改conf下server.xml. 修改shutdown端口: &l ...

  7. 一台服务器搭载两个tomcat项目

    之前下载的mysql  在官网是有 历史库的 如果现在一台机器上已经部署了一个tomcat服务,无论这个tomcat是否已经注册为服务了,或者没有注册windows服务,或者注册了,都没关系.都可以采 ...

  8. 在linux服务器上装svn版本管理,自动部署代码到web项目

    在linux服务器上装svn版本管理,自动部署代码到项目 1.安装svn服务器端  yum install subversion   从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认  ...

  9. 一台服务器部署多台tomcat

    如题,多个项目部署在一台服务器.减少容错性,觉得分开部署,这样一个tomcat挂了不会影响另一个项目.看配置和应用大小决定数量,一般四五个没问题,也有单台服务器部署8个tomcat稳定运行的. 下面记 ...

随机推荐

  1. Oracle RAC环境下ASM磁盘组扩容

    生产环境注意调整以下参数: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  2. 【CF497E】Subsequences Return 矩阵乘法

    [CF497E]Subsequences Return 题意:设$s_k(x)$表示x在k进制下各位数的和mod k的值.给出k,现有序列$s_k(1),s_k(2),...s_k(n)$.求这个序列 ...

  3. postgresql修改数据库编码

    update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'your_database'; 先用 \e ...

  4. js中 函数声明/函数表达式/匿名函数/箭头函数/立即执行函数

    函数声明: function add(a, b) { // ... } 1.顾名思义,声明一个函数, 用关键字 “function” 来告诉,这是一个函数. 2.任何地方,想用就可以拿过来使用 函数表 ...

  5. js中的 substr方法与substring方法 不同

    一个参数时: 二者同为  从 第参数个 开始截取,一直到str 末尾,并返回. 二个参数时: substr(a,b):  从第a个字符开始, 截取b个. substring(a,b):  从第a个字符 ...

  6. ffmpeg 转换 mp4 成 flv

    参考资料: https://addpipe.com/blog/flv-to-mp4/ ffmpeg -i demo.mp4 -c:v libx264 -crf 19 demo.flv 或者 ffmpe ...

  7. Oracle 使用Dblink

    DBLINK数据库链接是一个数据库中的模式对象,使您可以访问另一个数据库上的对象. dblink限定符允许您引用除本地数据库以外的数据库中的对象,如果省略了dblink,那么Oracle假定您指的是本 ...

  8. python中matplotlib的颜色及线条控制

    参考网址: http://www.cnblogs.com/darkknightzh/p/6117528.html http://stackoverflow.com/questions/22408237 ...

  9. 注意兼容浮点运算误差 0.7 + 0.1 ==0.8 为false

    所以比较 汇总或者计算的时候注意确定精度0.7 + 0.1 ==0.8 换成 Math.abs(0.7 + 0.1 ==0.8)<0.0001参考下

  10. orange---openresty.

    需要有一个类似于API网关的中间件来做API的管理工作,也就是API的实现方面更多的考虑业务逻辑,安全.性能.监控可以交由网关来做(如下图所示,下图根据Kong官方文档修改) 通过MySQL存储来简单 ...