一、前言

之前有写过如何在单台服务器上执行脚本自动更新程序包,但平时测试过程中相信大部分公司都是需要测试人员在服务器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. MongoDB,入门看这一篇足矣!

    一.介绍 在介绍 MongoDB 之前,我先介绍一下业务开发的时候遇到的痛点,以便大家对它有一个更加清晰的认识! 最近在用数据库存储数据的时候发现这么一个坑,例如从消息队列中监听消息的时候,原来的做法 ...

  2. ClickHouse与Elasticsearch压测实践

    1 需求分析 1.1 分析压测对象 1)什么是ClickHouse 和Elasticsearch ClickHouse 是一个真正的列式数据库管理系统(DBMS).在 ClickHouse 中,数据始 ...

  3. BNC Part-of-speech codes

    Extracted from the BNC Manual AJ0 adjective (general or positive) e.g. good, old AJC comparative adj ...

  4. (数据科学学习手札142)dill:Python中增强版的pickle

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,相信不少读者朋友们都在Pyth ...

  5. nginx配置文件安全设置--重要

    防止Nginx头部攻击漏洞和恶意域名解析漏洞 在nginx主配置文件中,写第一个server,server_name用默认default_server,让所有未匹配的server_name,都走这个s ...

  6. Git Review + Gerrit 安装及使用完成 Code-Review

    转载自:https://cloud.tencent.com/developer/article/1010615 1.Code Review 介绍 Code Review 代码评审是指在软件开发过程中, ...

  7. .NET下数据库的负载均衡(有趣实验)

    相关下载: 数据库的负载均衡-示例代码(dp1-DbBalance.rar) 数据库的负载均衡-示例代码(dp1-DbBalance.rar) 支持.Net/.Net Core/.Net Framew ...

  8. NSIS查找文本中是否包含某个字串

    !include "textfunc.nsh"!include "logiclib.nsh"OutFile "find.exe"#文本文件a ...

  9. 「Tubian」Tubian0.41!支持Windows QQ微信!

    Tubian 0.42已发布:https://www.cnblogs.com/tubentubentu/p/16745926.html Sourceforge.net下载:https://source ...

  10. flood_it 方法记录

    心路历程 根据题面的描述,我们面临的问题无非是,每次将色块更新成什么颜色.又因为是从左上角开始更新,所以我的有了第一个想法. 将左上角的色块命名为"原色块". 对于每个色块,定义4 ...