weblogic自动化打补丁脚本
转至:https://www.it610.com/article/1294086996750311424.htm
目的
weblogic每个季度都会有psu更新,打补丁操作也变成了每个季度都要做的事情,我们往往是通过登陆xshell等工具,一台一台的停服务打补丁启动服务。如果是单机部署的weblogic并且数量不多的话还好,通过手动登陆系统一套一套的打;那么如果是集群的环境而且集群是由多台weblogic服务器组成,手工的打补丁方式就显得十分低效,这样的话就由必要实现自动化打补丁方案了。
环境准备
搭建nginx服务器:存放weblogic补丁包(其他能够存放补丁包的服务器也是可以的)
weblogic 10.3.6和weblogic 12c环境各一套(10.3.6和12c两个版本打补丁的方式不同)
所有脚本要使用weblogic用户执行
weblogic10.3.6自动打补丁脚本
- 在打10.3.6的补丁之前,需要先卸载补丁,所以得有一个卸载补丁的脚本
#!/bin/bash
#PUTIL是补丁工具的路径,WLSHOME1是weblogic的家目录(不知道理解的对不对)
PUTIL=/u01/wls10/Oracle/Middleware/utils/bsu
WLSHOME1=/u01/wls10/Oracle/Middleware/wlserver_10.3
#将获取到的补丁jar包放入临时的文件,方便后续卸载补丁使用
cd ${PUTIL} && ./bsu.sh -prod_dir=${WLSHOME1} -status=applied -verbose -view | grep jar > tmp_jar
#打过weblogic10.3.6psu的人会发现有时候,上一个psu可能会是由两个jar包组成,比如a.jar和b.jar
#这两个补丁的卸载需要有一定的顺序,如果先打了a.jar然后打了b.jar,那卸载的顺序就是先卸载b.jar,再卸载a.jar
#如果卸载顺序出错,就会出现卸载补丁冲突的报错
#将查询到的tmp_jar文件通过tac命令逆序取出,为了实现上述所说的多个补丁的情况
jar_names=($(tac tmp_jar | awk '{print $NF}' | awk -F '.' '{print $(NF-1)}'))
for jar_name in ${jar_names[@]}; do
echo "remove ${jar_name}"
cd ${PUTIL}/cache_dir && ./bsu.sh -remove -patchlist=${jar_name} -prod_dir=${WLSHOME1}
done
- 打补丁脚本
#!/bin/bash
PUTIL=/u01/wls10/Oracle/Middleware/utils/bsu
WLSHOME1=/u01/wls10/Oracle/Middleware/wlserver_10.3
#创建文件夹存放补丁包
#判断存放补丁包的文件夹是否存在:
if [ -d ${PUTIL}/cache_dir ];then
echo "exsits"
else
mkdir -p ${PUTIL}/cache_dir
chown -R weblogic:weblogic ${PUTIL}/cache_dir
chmod -R 775 ${PUTIL}/cache_dir
fi
#获取补丁包
which wget 2>&1 >/dev/null
if [[ $? -eq 0 ]];then
echo esixt;
else
yum install wget -y
fi
which unzip 2>&1 >/dev/null
if [[ $? -eq 0 ]];then
echo esixt;
else
yum install unzip -y
fi
#PKG_PATCH是补丁包名称
cd ${PUTIL}/cache_dir && wget ftp://10.10.10.10/tmp/${PKG_PATCH}
#解压补丁包
cd ${PUTIL}/cache_dir && unzip *.zip
chown weblogic:weblogic -R ${PUTIL}/cache_dir
chmod 775 -R ${PUTIL}/cache_dir
#更改bsu.sh脚本中的内存参数,目的是提高打补丁的速度
if [ -f ${PUTIL}/bsu.sh.bak ];then
echo "exsits"
else
cp ${PUTIL}/bsu.sh ${PUTIL}/bsu.sh.bak
cd ${PUTIL} && sed -i '5c MEM_ARGS="-Xms2048m -Xmx4096m -XX:-UseGCOverheadLimit"' ./bsu.sh
fi
#停服务,这一步比较暴力,可以通过weblogic提供的脚本来停止,有时候会遇到停不掉的情况发生,所以直接kill进程,生产环境需要考虑下这一步操作
ps -ef | grep java| grep weblogic | grep -v "grep" 2>&1 >/dev/null
if [[ $? -eq 0 ]];then
ps -ef |grep java| grep weblogic | grep -v "grep"|awk '{print $2}'|xargs kill -9
else
echo "no exsits"
fi
#打补丁:
cd ${WLSHOME1}/server/bin && source setWLSEnv.sh
cd ${PUTIL}/cache_dir && PK=$(ls -lt *.jar | head -n 1 | awk '{print $NF}' | awk -F "." '{print $1}')
cd ${PUTIL} && ./bsu.sh -install -patch_download_dir=${PUTIL}/cache_dir -patchlist=${PK} -prod_dir=${WLSHOME1}
#启动weblogic服务
nohup sh /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.sh &
weblogic12c自动打补丁脚本
- 打补丁脚本
#!/bin/bash
#创建文件夹存放补丁包
#判断存放补丁包的文件夹是否存在:
if [[ -d /tmp/wlspatch ]];then
echo "exsits"
else
mkdir -p /tmp/wlspatch
chown -R weblogic:weblogic /tmp/wlspatch
chmod -R 775 /tmp/wlspatch
fi
#获取补丁包
which wget 2>&1 >/dev/null
if [[ $? -eq 0 ]];then
echo esixt;
else
yum install wget -y
fi
which unzip 2>&1 >/dev/null
if [[ $? -eq 0 ]];then
echo esixt;
else
yum install unzip -y
fi
cd /tmp/wlspatch && wget ftp://10.10.10.10/tmp/${PKG_PATCH}
#解压
unzip /tmp/wlspatch/*.zip -d /tmp/wlspatch
chown -R weblogic:weblogic /tmp/wlspatch
chmod -R 775 /tmp/wlspatch
#停止weblogic服务
#调用停止weblogic服务的脚本
#打补丁
PKG_NAME=$(cd /tmp/wlspatch && ls | grep -Ev '*.zip')
cd /tmp/wlspatch/${PKG_NAME} && ${PUTIL}/opatch apply -silent
#删除/tmp/wlspatch
mv /tmp/wlspatch /tmp/wlspatch_$(date +%s)
#开启weblogic服务
cd /home/weblogic && ./restart.sh
- 参考上述脚本,可以再写一个卸载weblogic12c补丁的脚本
weblogic自动化打补丁脚本的更多相关文章
- Weblogic反序列化漏洞补丁更新解决方案
Weblogic反序列化漏洞的解决方案基于网上给的方案有两种: 第一种方案如下 使用SerialKiller替换进行序列化操作的ObjectInputStream类; 在不影响业务的情况下,临时删除掉 ...
- weblogic 升级bsu_Weblogic补丁升级之坑坑洼洼
转至:https://blog.csdn.net/weixin_30682635/article/details/111911952 [概述] 虽然当前国内去IOE波涛汹涌,但不可否认OracleWe ...
- 通过SqlClr制作Sql自动化批量执行脚本
原文:通过SqlClr制作Sql自动化批量执行脚本 通过SqlClr制作Sql自动化批量执行脚本 在与同事一起做项目时,看到同事用sqlclr做批量执行脚本,感觉挺新奇的就上网搜集资料自己模仿跟做了个 ...
- Python测试开发-浅谈如何自动化生成测试脚本
Python测试开发-浅谈如何自动化生成测试脚本 原创: fin 测试开发社区 前天 阅读文本大概需要 6.66 分钟. 一 .接口列表展示,并选择 在右边,点击选择要关联的接口,区分是否要登录, ...
- 自动启动WebLogic系统的服务脚本
转至:http://blog.chinaunix.net/uid-20164485-id-1973841.html 自动启动WebLogic系统的服务脚本 2010.10.25 TsengYia# ...
- Weblogic 升级更新补丁操作步骤
转至:https://blog.csdn.net/allway2/article/details/91424413 Weblogic 升级更新补丁操作步骤: 1.上传补丁包2.kill weblogi ...
- WebLogic服务器打补丁(11g/12c)
转至:https://segmentfault.com/a/1190000019059894 背景 2019年04月17日,Oracle发布新季度安全公告.该安全公告披露WebLogic服务器存在多个 ...
- 自动化TOPSQL优化脚本
'自动化优化’只是个噱头,要能自动化世界就安静了.只是行里非得要这么个名字. 最基本的抓取系统topsql,是通过awr,但是这样有诸多弊端和不灵活,比如数量较少.不能直接看执行计 ...
- weblogic创建控制台启动脚本以及创建服务器
一.创建控制台脚本 二.创建认证文件 通过上面创建的脚本进行启动的时候,会因为密码问题导致起不来,因为在startWebLogic.sh文件中,没有配置用户名和密码.而且通过上面创建的脚本,启动的时候 ...
随机推荐
- MySQL技术内幕(一)
MySQL技术内幕 2. InnoDB存储引擎 2.1 InnoDB存储引擎概述 特点:行锁设计.支持MVCC.支持外键.提供一致性非锁定读 2.2 InnoDB体系架构 2.2.1 后台线程 Inn ...
- redis一主两从搭建
一主两从搭建: 主配: daemonize yes port 6379 logfile ./redis6379.log dir ./ bind 10.131.156.170 从1配: daemoniz ...
- 使用 MVVM Toolkit Source Generators
关于 MVVM Toolkit 最近 .NET Community Toolkit 发布了 8.0.0 preview1,它包含了从 Windows Community Toolkit 迁移过来的以下 ...
- Filter+Redis解决项目之间调用的幂等性
幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同 在项目远程调用中,如果接 ...
- Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
datetime 时间和日期模块 datetime 模块提供了以简单和复杂的方式操作日期和时间的类.虽然支持日期和时间算法,但实现的重点是有效的成员提取以进行输出格式化和操作.该模块还支持可感知时区的 ...
- iBooker 财务提升星球 2020.2~3 热门讨论
前两天分享了一下关于我们个人的现金流,今天就以公司的角度去分- 我们技术人,如何开源增加我们的收入? 首先,我们对收入进行下- 热门股要不要买? 参考标准: 1. 时机 2. 泡沫 时- #老实人报# ...
- AtCoder AGC002 简要题解
从今天开始,联赛之前大约要完成前 \(20\) 套 \(\rm AGC\),希望不要鸽. A 略 B 感觉这题比 \(\rm C\) 题难. 考虑对于每个时刻维护每个位置是否可能出现红球,那么一个时刻 ...
- sharding-jdbc5.0.0分表实践
本文基于shardingsphere-jdbc-core-spring-boot-starter 5.0.0,请注意不同版本的sharding-jdbc配置可能有不一样的地方,本文不一定适用于其它版本 ...
- C语言中缀表达式求值(综合)
题前需要了解的:中缀.后缀表达式是什么?(不知道你们知不知道,反正我当时不知道,搜的百度) 基本思路:先把输入的中缀表达式→后缀表达式→进行计算得出结果 栈:"先进先出,先进后出" ...
- 入门 - k8s伸缩应用程序 (六)
目标 使用 kubectl 伸缩应用程序. Scaling(伸缩)应用程序 在之前的文章中,我们创建了一个 Deployment,然后通过 服务 提供访问 Pod 的方式.我们发布的 Deployme ...