本次分为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>&1proceecho "项目重置成功!文件传输完成!(请登录${slaip}执行${sladir}下的schenglee.sh脚本)"
}
function proce(){i=0;str=""arr=("|" "/" "-" "\\")while [ $i -le 100 ]dolet index=i%4let indexcolor=i%8let color=30+indexcolorprintf "\e[0;$color;1m[%-100s][%d%%]%c\r" "$str" "$i" "${arr[$index]}"sleep 0.1let i++str+='='doneprintf "\n"
}
function mk_dir(){if [ -d "${backdir}" ];thenrunelsemkdir ${backdir}runfi
}
function run(){./bin/shutdown.shprocecp webapps/${warname} backup/${warname}-${TODAY} && rm -rf webapps/${wardir}*cp ${warname} webapps/./bin/startup.shproce
}
function main(){mk_dirtrain
}
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 ]dolet index=i%4let indexcolor=i%8let color=30+indexcolorprintf "\e[0;$color;1m[%-100s][%d%%]%c\r" "$str" "$i" "${arr[$index]}"sleep 0.1let i++str+='='doneprintf "\n"
}
function mk_dir(){if [ -d "${backdir}" ];thenrunelsemkdir ${backdir}runfi
}
function run(){./bin/shutdown.shprocecp webapps/${warname} backup/${warname}-${TODAY} && rm -rf webapps/${wardir}*cp ${warname} webapps/./bin/startup.shproce
}
function main(){mk_dir
}
main

用法

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

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

转载于:https://www.cnblogs.com/chenglee/p/10341958.html

shell实现自动部署两台tomcat项目Ⅱ相关推荐

  1. linux系统中同一台服务器部署两个tomcat

    参考资料:https://www.cnblogs.com/liulinghua90/p/9329031.html      里面描述十分详细,一定要去看这位大佬的资料!! 以下是我自己实践整理出来的, ...

  2. windows服务器下部署多台tomcat

    2019独角兽企业重金招聘Python工程师标准>>> 1.首先部署好一个以及jdk环境 参考http://jingyan.baidu.com/article/03b2f78c464 ...

  3. π-Disk派盘——能自动同步两台电脑的云盘

    π-Disk派盘®是一款面向个人和企业的本地云存储解决方案. π-Disk派盘® – 数字第二大脑服务平台 它利用了本地硬盘的存储容量,通过"云化"的方式,可以将本地硬盘变成云存储 ...

  4. 单体项目部署多台机定时任务数据插入重复问题

    解决多台机同时插入造成数据重复 个人负责了一个单体SpringMVC+Quartz定时任务框架的项目,该项目部署两台机,属于低数据量低并发项目,项目原本并没有做集群配置,之前部署到线上没出现问题,直到 ...

  5. java 实现自动生成部署文档_jenkins的部署、实现自动拉取gitlab仓库代码、实现项目中代码自动部署以及项目关联触发......

    jenkins主机内存和gitlab主机内存最好配置4G及以上,防止各自的web端打不开 1.配置JDK环境 1)jdk解压到此目录 [root@localhost src]# pwd /usr/lo ...

  6. DevOps - Spring Boot自动部署到WebLogic

    前言 想想,如果Spring Boot的项目在本地IDEA可以直接通过内嵌tomcat的jar运行,而只要往GitHub上提交代码,就能自动帮你打包成war包部署在项目组的WebLogic服务器上,该 ...

  7. 汤姆猫(Tomcat)概述+部署(nginx+tomcat)+优化

    Tomcat 一.Tomcat概述与请求过程示意图 二.Tomcat服务部署 2.1 万恶防火墙+上传Tomcat所需软件包 2.2 安装JDL并设置JDK的环境变量 2.3 安装启动Tomcat并从 ...

  8. 实验详解——Cobbler自动部署最小化安装

    实验详解--Cobbler自动部署最小化安装 一.实验:自动部署 二.Cobbler自动装机服务搭建步骤 1.导入epel源并加载在线安装源 2.安装Cobbler以及其相关服务软件包 3.修改cob ...

  9. eclipse修改java热部署免重启tomcat在Host标签下增加Context直接将docBase指定为项目的WebContent路径

    为了避免每次修改java文件eclipse都自动重启耗时较长,研究了网上方法,在eclipse+tomcat7本机实践了下可行. 原理:将eclipse工程的WebContent直接作为部署目录,你的 ...

最新文章

  1. context:property-placeholder标签实现参数剥离
  2. Java Review - 并发编程_LinkedBlockingQueue原理源码剖析
  3. QT实现音乐的大小可视化为动画条
  4. 论文浅尝 | 通过文本到文本神经问题生成的机器理解
  5. 深入浅出requireJS-1
  6. Java中的生产消费者问题
  7. Android--SharedPreferences数据存储方案
  8. 一个牛人给JAVA初学者的建议【转】
  9. 解决缓存和数据库双写数据一致性问题
  10. strut2下载文件
  11. so库方法的调用过程
  12. python的拼音_Python返回汉字的汉语拼音(原创) | 学步园
  13. 制作咖啡店的banner
  14. 什么是 Ubuntu?
  15. SQL service的事务提交和回滚
  16. mysql查询第二个字母为a_MSSQL_关于SQL Server查询语句的使用,一.查询第二个字母是t或者a的 - phpStudy...
  17. 为什么要使用去耦电容?去耦电容的工作原理。
  18. 【系统故障】解决动态库路径错误导致ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found 的问题
  19. 178Echarts - 主题河流图(ThemeRiver)
  20. 旧电脑变废为宝成为nas

热门文章

  1. python如何编程日期_python编程开发之日期操作实例分析
  2. 应届毕业生面试软件测试工程师时应注意什么?
  3. pythonmkdir语法错误_Python:windows创建文件夹时出错操作系统.mkdir使用方括号
  4. 模态框分页java代码_ajax分页效果(bootstrap模态框)
  5. 【三次握手、四次挥手流程】及【长短链接区别】
  6. 21天Jmeter打卡合集之从入门到精通
  7. 入职抖音之后,我变强了,但是营养也有点跟不上了...
  8. 资深和新手的100大 Selenium面试问答
  9. 显卡报错测试软件,显卡识别软件GPU-Z更新至2.3.0,彻底揭开RX Vega面纱
  10. php7 xmlreader,PHP扩展之XML操作(四)——XMLReader