一、前言

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

上面的例子中对应程序包是通过控制台进行更新,如果程序为前端包或者微服务接口也大同小异,脚本中做一些变更即可。

最新文章

  1. JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一)
  2. 关于C++的递归调用(n的阶乘为例)
  3. codevs 1432 总数统计
  4. HDU 2602 Bone Collector WA谁来帮忙找找错
  5. 微信去除 防欺诈盗号请勿支付或输入qq密码 以及 防欺诈或盗号请不要输入qq密码 的方法
  6. 修改ecshop让订单详情里将会员地址详情全部显示
  7. 【BZOJ】【1046】【HAOI2007】上升序列
  8. 研究Dropbox Server端文件系统
  9. android目录
  10. ios 图形学习笔记
  11. Mysql的联合查询
  12. Codeforces Round #209 (Div. 2)
  13. DLNA它 Error, can't findlibavformat ! 解
  14. Linux安装jdk7开发环境
  15. ctp交易平台转java接口转换
  16. 用tensorlayer导入Slim模型迁移学习
  17. JVM方法调用过程
  18. Python3基础-代码阅读系列—优惠码生成
  19. pip升级包错误问题解决
  20. 利用WebApplicationInitializer配置SpringMVC取代web.xml

热门文章

  1. AI 音辨世界:艺术小白的我,靠这个AI模型,速识音乐流派选择音乐 ⛵
  2. Manacher算法讲解——字符串最长回文子串
  3. Windows API 学习
  4. 《HelloGitHub》第 77 期
  5. 【lwip】06-网络接口层分析
  6. SpringMVC 07: WEB-INF下的资源访问 + SpringMVC拦截器
  7. KingbaseFlySync 版本升级
  8. Mac根据端口找进程id
  9. acme.sh官方中文说明文档
  10. Elasticsearch集群黄色原因的终极探秘