实现将机器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 ...
随机推荐
- 一些有用的数学知识(Updating)
文章目录 拉格朗日插值公式 微分中值定理 费马引理 拉格朗日中值定理 柯西中值定理 洛必达法则 连分数(NOI2021 D2T2 考点) 定义 结论 定理1 定理2 定理3 定理4 定理5 欧拉公式 ...
- session,cookie,jwt的简单使用
cookie的使用 https://blog.csdn.net/qq_58168493/article/details/122492358 session的使用 https://blog.csdn.n ...
- Python自学教程12-类和对象怎么用
Python是一门现代化的编程语言,也是一门面向对象的编程语言. 现代编程语言几乎都支持面向对象编程,面向对象编程是最有效的软件编写方法之一.你可以用类和对象来表示现实当中的任何的事物和行为. 编写类 ...
- noip 2014 提高组初赛
noip 2014 提高组初赛 一. TCP协议属于哪一层协议( ) A. 应用层 B. 传输层 C. 网络层 D. 数据链路层 B TCP(传输控制协议) 若有变量int a; float: x, ...
- 第一章 kubernetes概述
一.Kubernetes概述 1.官网地址:https://kubernetes.io 2.GuiHub:https://github.com/kubernetes/kubernetes 3.又来:谷 ...
- KingbaseES 缺少库文件问题
在工作中大家经常会遇到找不到某个so 的问题,这类可能是so文件缺失,或者是由于LD_LIBRARY_PATH 环境变量设置不当的原因. 1.库文件 我们通常把一些公用函数制作成函数库,供其它程序使用 ...
- Java 函数式编程
由 JS 转 Java,写惯了 React,习惯了函数式,因此转 Java 时也是先学函数式. 语法糖「Syntactic Sugar」 起初,Java 的函数式看起来是匿名类的一个语法糖. Stre ...
- 论文解读(RvNN)《Rumor Detection on Twitter with Tree-structured Recursive Neural Networks》
论文信息 论文标题:Rumor Detection on Twitter with Tree-structured Recursive Neural Networks论文作者:Jing Ma, Wei ...
- 注解@PostConstruct分析
作用 1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了CommonA ...
- [开源福利] FreeRedis 历时两年正式发布 v1.0 [C#.NET Redis Client]
最近很多 .net QQ 群无故被封停,特别是 wpf 群几乎全军覆没.依乐祝的 .net6交流群,晓晨的 .net跨平台交流群,导致很多码友流离失所无家可归,借此机会使用一次召唤术,有需要的请加群: ...