实现将机器A上的程序包复制到机器B并更新的脚本
一、前言
之前有写过如何在单台服务器上执行脚本自动更新程序包,但平时测试过程中相信大部分公司都是需要测试人员在服务器A上进行功能测试,测试通过后再将程序包更新到服务器B上进行安全测试或者性能测试;今天这篇文章将讲解如何将服务器A的程序包复制到服务器B,并远程登录到服务器B上执行相关脚本更新程序。
二、思路
服务器A上选择要更新的系统-->选择系统下要更新的程序并复制-->远程登录到服务器B-->服务器B上执行更新程序脚本。
三、编写相关脚本
1、服务器A上选择要更新的系统
在服务器A家目录下编写对应脚本,如图:

#!/bin/bash
echo -e "\033[33m 请选择要更新的系统 \033[0m"
echo -e "\033[33m 1.sp 2.blsp 3.yjs \033[0m"
echo -e "\033[33m 4.tysb 5.ckyth 6.zt \033[0m"
echo -e "\033[33m ------------------------------------------- \033[0m"
read type
if [ $type == 1 ] ; then
cd 248_deploy
./sp.sh
elif [ $type == 2 ] ; then
cd 248_deploy
./blsp.sh
elif [ $type == 3 ] ; then
cd 248_deploy
./yjs.sh
elif [ $type == 4 ] ; then
cd 248_deploy
./tysb.sh
elif [ $type == 5 ] ; then
cd 248_deploy
./ckyth.sh
elif [ $type == 6 ] ; then
cd 248_deploy
./zt.sh
else
echo "您的输入有误,请正确输入"
fi
2、选择某一系统要更新的程序并复制
在服务器家目录下新增一个文件夹(例子中为:248_deploy),文件夹中存放上个脚本中用到的各个系统的选择更新程序的脚本(例子中的sp.sh、yjs.sh等),如图:

上个脚本中假如选择“1”,则接下来会执行sp.sh脚本,具体如下:
#!/bin/bash
warpath_133=/u01/weblogic/Middleware/user_projects/domains/base_domain/servers/AdminServer/upload
warpath_248=/u01/weblogic/Middleware/user_projects/domains/webapp/
echo -e "\033[33m 请选择要更新的包 \033[0m"
echo -e "\033[33m 1.ApprB 2.ApprSu 3.ApprC 4.ApprSy \033[0m"
echo -e "\033[33m ------------------------------------------- \033[0m"
read war
echo "$warpath_133"
if [ $war == 1 ] ; then
war_name="ApprB"
elif [ $war == 2 ] ; then
war_name="ApprSu"
elif [ $war == 3 ] ; then
war_name="ApprC"
elif [ $war == 4 ] ; then
war_name="ApprSy"
else
echo "您的输入有误,请正确输入"
fi
echo -e "\033[32m 开始复制$war_name \033[0m"
scp -r $warpath_133/$war_name/app/$war_name.war weblogic@19.1.0.248:$warpath_248
echo -e "\033[32m 开始远程248更新$war_name \033[0m"
/usr/bin/expect ./ssh/ssh248.exp
3、远程登录服务器B执行更新程序脚本
在上个脚本中可以看到,最后一行执行了ssh文件夹下的ssh248.exp实现了远程登录服务器,因此需要在上个脚本的当前目录(例子中为248_deploy)下新增一个文件夹(SSH)并在文件夹下编写对应脚本(ssh248.exp)

#!/usr/bin/expect
set timeout 300
set host "19.1.0.248"
set username "weblog"
set password "weblog" spawn ssh $username@$host
#expect "*password*"
#send "${password}\r"
expect "*]$*"
send "sh deploy.sh\r"
expect "*]$*"
send "exit\r"
expect eof
4、服务器B上执行更新程序脚本
在服务器B家目录下编写上个脚本中用到的对应脚本(例子中的deploy.sh)

#!/bin/bash
jdkpath=/u01/jdk1.8.0_11
weblogicpath=/u01/weblogic/Middleware/wlserver_10.3
export CLASSPATH=$jdkpath/lib/tools.jar:$weblogicpath/server/lib/weblogic_sp.jar:$weblogicpath/server/lib/weblogic.jar:$weblogicpath/server/lib/webservices.ja$weblogicpath/../oracle_common/modules/net.sf.antcontrib_1.1.0.0_1-0b2/lib/ant-contrib.jar:$weblogicpath/modules/features/oracle.wls.common.nodemanager_1.0.0. # 获取目录下日期最新的war包
war=`ls /u01/weblogic/Middleware/user_projects/domains/webapp -t |head -n 1`
echo -e "\033[32m ${war%.*}开始更新 \033[0m"
java weblogic.Deployer -adminurl t3://19.1.0.248:7001 -user weblogic -password weblogic123 -name ${war%.*} -targets AdminServer -redeploy
echo -e "\033[32m ${war%.*}更新完成 \033[0m"
以上完成从机器A将程序包复制到机器B并更新的相关操作。
上面的例子中对应程序包是通过控制台进行更新,如果程序为前端包或者微服务接口也大同小异,脚本中做一些变更即可。


实现将机器A上的程序包复制到机器B并更新的脚本的更多相关文章
- 解决xp下无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本Wi
今天装 tortoisegit 的时候发现安装包不能使用.报错无法通过windows installer服务安装此安装程序包.您必须安装带有更新版本Windows Installer服务的Window ...
- 无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本windows Installer服务的Windows
无法通过windows installer服务安装此安装程序包.您必须安装带有更新版本windows installer服务的Windows 出现这个问题不让安装程序,可以到微软网站更新Windows ...
- 用命令行工具创建 NuGet 程序包
NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.n ...
- 想拥有自己的Python程序包,你只需15步
来源商业新知网,原标题:15步,你就能拥有自己的Python程序包 全文共 3192 字,预计学习时长 6 分钟 每个软件开发员和数据科学家都难免要做程序包.本文推荐一篇 Python开源程序包的制作 ...
- Linux 程序包管理-YUM
前端工具YUM管理程序包: rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...
- 在64位Ubuntu系统上安装32位程序包
在64位Ubuntu系统上安装32位的程序包 $sudo apt-get install package_name:i386 例如: $sudo apt-get install openjdk-7-j ...
- Linux上java程序的jar包启动通用脚本(稳定用过)
Linux上java程序的jar包启动通用脚本如下: #! /bin/sh export LANG="zh_CN.GBK" SERVICE_NAME=` .sh` SCRIPT_N ...
- 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在
>>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...
- Intellij Idea上Spring Boot编译报错:Error:(3, 32) java: 程序包org.springframework.boot不存在
很尴尬,为了使用Spring Boot的Initializr,特意下了个Intellij Idea,刚按提示新建一个Spring Boot的Maven项目后,就出现红叉叉了.因为IDE是新的,开始是M ...
随机推荐
- c#中容易被忽视的foreach
有句俗语:百姓日用而不知.我们c#程序员很喜欢,也非常习惯地用foreach.今天呢,我就带大家一起探索foreach,走,开始我们的旅程. 一.for语句用的好好的,为什么要提供一个foreach? ...
- NODE 基于express 框架和mongoDB的cookie和session认证 和图片的上传和删除
源码地址 https://gitee.com/zyqwasd/mongdbSession 本项目的mongodb是本地的mongodb 开启方法可以百度一下 端口是默认的27017 页面效果 1. 注 ...
- 我的Vue之旅、01 深入Flexbox布局完全指南
花了几个小时整合的"A Complete Guide to Flexbox"最新版本,介绍了flexbox的所有属性,外带几个实用的例子. 传统布局.Flexbox 布局的传统解决 ...
- 使用SSH连接Windows Server
之前发过一篇在Windows Server上启用SSH服务器的文章.最近正好有这个需求,需要使用密钥免密登录服务器,试了一下,发现之前的方法不行了.需要再修正一些文件权限. 需要使用Repair-Au ...
- 初试 Prometheus + Grafana 监控系统搭建并监控 Mysql
转载自:https://cloud.tencent.com/developer/article/1433280 文章目录1.Prometheus & Grafana 介绍1.1.Prometh ...
- 从应用访问Pod元数据-DownwardApi的应用
对于某些需要调度之后才能知道的数据,比如 pod 的 ip,主机名,或者 pod 自身的名称等等,k8s 依旧很贴心的提供了 Downward API 的方式来获取此类数据,并且可以通过环境变量或者文 ...
- Linux命令系列之top——里面藏着很多鲜为人知的宝藏知识
Linux命令系列之top--里面藏着很多鲜为人知的宝藏知识 简介 top命令是我们经常用来查看系统信息的一个指令,它提供了一个动态的而且是实时的借口帮助我们去查看系统执行时的进程.线程和系统参数的信 ...
- docker搭建个人云盘可道云kodbox
1.拉取kodbox镜像 (文章最后有自己编写yml文件可直接搭建) docker pull tznb/kodbox:1.15 2. 创建并启动kodbox docker run -d -it --n ...
- GCN的原理及其代码实现
图数据的特征性质 图像数据是一种特殊的图数据,图像数据是标准的2D网格结构图数据.图像数据的CNN卷积神经网络算法不能直接用在图数据上,原因是图数据具有以下特殊性. 节点分布不均匀:图像数据及网格数据 ...
- 几个Caller-特性的妙用
System.Runtime.CompilerServices命名空间下有4个以"Caller"为前缀命名的Attribute,我们可以将它标注到方法参数上自动获取当前调用上下文的 ...