一、前言

之前有写过如何在单台服务器上执行脚本自动更新程序包,但平时测试过程中相信大部分公司都是需要测试人员在服务器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并更新的脚本的更多相关文章

  1. 解决xp下无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本Wi

    今天装 tortoisegit 的时候发现安装包不能使用.报错无法通过windows installer服务安装此安装程序包.您必须安装带有更新版本Windows Installer服务的Window ...

  2. 无法通过windows installer服务安装此安装程序包。您必须安装带有更新版本windows Installer服务的Windows

    无法通过windows installer服务安装此安装程序包.您必须安装带有更新版本windows installer服务的Windows 出现这个问题不让安装程序,可以到微软网站更新Windows ...

  3. 用命令行工具创建 NuGet 程序包

    NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.n ...

  4. 想拥有自己的Python程序包,你只需15步

    来源商业新知网,原标题:15步,你就能拥有自己的Python程序包 全文共 3192 字,预计学习时长 6 分钟 每个软件开发员和数据科学家都难免要做程序包.本文推荐一篇 Python开源程序包的制作 ...

  5. Linux 程序包管理-YUM

    前端工具YUM管理程序包:  rpm管理软件虽然方便,但是需要手工解决软件包的依赖关系:很多时候安装一个软件需要首先安装一个或多个(有时多达上百个)其它软件,手工解决很复杂:使用yum可以解决这个问题 ...

  6. 在64位Ubuntu系统上安装32位程序包

    在64位Ubuntu系统上安装32位的程序包 $sudo apt-get install package_name:i386 例如: $sudo apt-get install openjdk-7-j ...

  7. Linux上java程序的jar包启动通用脚本(稳定用过)

    Linux上java程序的jar包启动通用脚本如下: #! /bin/sh export LANG="zh_CN.GBK" SERVICE_NAME=` .sh` SCRIPT_N ...

  8. 【spring cloud】【IDEA】【maven】spring cloud多模块在idea上使用maven插件打包报错:程序包XXX不存在

    >>>>spring cloud 多模块 >>>>在idea上使用maven插件打包,欲打包成jar包后 进行部署 >>>> 报 ...

  9. Intellij Idea上Spring Boot编译报错:Error:(3, 32) java: 程序包org.springframework.boot不存在

    很尴尬,为了使用Spring Boot的Initializr,特意下了个Intellij Idea,刚按提示新建一个Spring Boot的Maven项目后,就出现红叉叉了.因为IDE是新的,开始是M ...

随机推荐

  1. 【manim】含有add_updater更新函数become的物体移动方法

    在manim社区版本中, 一.对于一般的物体,移动的方法分为 (瞬移) 和 (带动画移动) 1.瞬移        #直接对物体操作即可    obj.shift(LEFT)         #瞬间移 ...

  2. hadoop 文件参数配置

    准备环境(省略) 上传实验所需的压缩包 配置网络信息 修改主机名 配置域名解析 关闭防火墙与SELinux(在所有节点上执行)代码如下: systemctl disable --now firewal ...

  3. Openstack之各组件命令

    openstack 组件命令 Glance组件操作(镜像服务组件) #环境配置: source /etc/keystone/admin-openrc.sh #查看镜像列表: glance image- ...

  4. SpringBoot使用libreoffice转换PDF

    1.简介 有时候我们需要在程序中使用到office的转换和预览功能,本文就针对这个需求记录了较为简单的office转换和功能:jodconverter.当然也有aspose和其他开源第三方(kkfil ...

  5. Redis 的大 Key 对持久化有什么影响?

    作者:小林coding 图解计算机基础(操作系统.计算机网络.计算机组成.数据库等)网站:https://xiaolincoding.com 大家好,我是小林. 上周有位读者字节一二面时,被问到:Re ...

  6. 使用tomcat部署java的war包操作

    修改tomcat配置文件server.xml 修改端口号,别跟其他已经被使用的端口号起冲突 修改项目所在路径 <?xml version="1.0" encoding=&qu ...

  7. CentOS 7配置Chrony服务进行时间同步

    CentOS 7版本中使用Chrony工具实现本地时间与标准时间同步.与CentOS 6版本中的NTP服务不同,Chrony可以更快更准确地同步系统时钟,最大程度的减少时间和频率误差.Chrony包含 ...

  8. host主机监控规则

    1.先在 Prometheus 主程序目录下创建rules目录,然后在该目录下创建 host.yml文件,内容如下: 内容很多,可以根据实际情况进行调整. 规则参考网址:https://awesome ...

  9. 1.在 Kubernetes 在快速安装 Harbor

    网址:https://www.qikqiak.com/post/harbor-quick-install/ 安装 Harbor Harbor 支持多种安装方式,源码目录下面默认有一个安装脚本(make ...

  10. iOS Social和Accounts简单使用

    ACAccountStore *account = [[ACAccountStore alloc] init]; ACAccountType *type = [account accountTypeW ...