weblogic10本版自动化补丁脚本

weblogic10本版自动化补丁脚本

该脚本涉及Linux系统和AIX

#!/bin/bash
#!/bin/ksh
#-------
# shell coding ANSI
#
#---修改参数----
#版本备份包
bakweblogic=wlsbakxxxxx.tar
#软件下发目录
xfmd=/dir/xxxxx
#weblogic开发根目录
r_path=/weblogic/wls1036
#备份文件目录
bak_path=/weblogic/wls_bak
#临时目录
tmp_path=/tmp/weblogic/log
#-------------
ps -ef | grep Name= | grep -v grep | awk {'print $2'} | xargds kill -9
#删除不必要的文件
cd $r_path
tar cf $bak_path/$bakweblogic.tar
#移除相关文件
mkdir -p $r_path/utils/bsu/cache_dir
#查看当前系统类型
os_type=`uname`
#系统语言
lang_value=`echo $LANG`
echo $lang_value

#删除冲突版本
rm_banben()
{
	while (( $patch_errlist_num > 0 ))
	do
		value=`sed -n $patch_errlist_num\p $tmp_path/list.log`
		if [ "$os_type" =="Linux" ]; then
			banbenlist=($(echo $value | sed -e 's/,/ /g'))
			echo $banbenlist
			endnum=${#banbenlist[@]}
		elif [ "$os_type" == "AIX" ]; then
			banbenlista=`echo $value | sed -e 's/,/ /g'`
			echo $banbenlista
			eval set -A banbenlist $banbenlista
			endnum=${#banbenlist[*]}
		fi
		echo $endnum
		while (( $endnum > 0 ))
		do 
			let endnum=endnum-1
			banben=${banbenlist[$endnum]}
			echo "*** 删除冲突补丁:$banben ***"
			sh bsu.sh -remove -patchlist=$banben -prod_dir=$r_path/wlserver_10.3/
			echo "*** $banben 删除成功 ***"
		done
		let patch_errlist_num=patch_errlist_num -1
	done
	return 0
}

clashBb(){
	cat $tmp_path/patch_list.log | grep "互斥排斥且不能共存" | awk '{print $4}' > $tmp_path/list.log
	patch_errlist_num=`cat $tmp_path/list.log | wc -l`
	return $patch_errlist_num
}
value_all(){
	if [ $1 -eq 0 ]; then
		echo "$2 OK!" 
	else 
		export LANF=$lang_value
		echo "$2 error !!! $3 "
}
up_Banben(){
	echo "*** 开始安装 $upbanben 版本补丁 ***"
	sh bsu.sh -install -patch_download_dir=$r_path/utils/bsu/cache_dir/ -patchlist=$upBanBen -prod_dir=$r_path/wlserver_10.3/ -verbose > $tmp_path/patch_list.log 2>&1
	patch_oklist_num=`cat $tmp_path/patch_list.log | grep "结果:成功" | wc -l`
	if [$patch_oklist_num = 1]; then
		echo "*** $upBanBen 升级成功 ***"
		return 0
	else
		clashBb
		if [ $? -ne 0 ]; then
			echo "*** 存在冲突版本: ***"
			cat $tmp_path/list.log
			echo "*** 开始删除冲突版本 ***"
			return 1
		else
			return 2
		fi
	fi
}

up_weblogic(){
	echo " *** 准备 $upBanBen 升级 *** "
	mkdir -p $tmp_path
	export LANG='zh_CN.gbk'
	cd $r_path/utils/bsu/cache_dir/
	rm -rf $r_path/utils/bsu/cache_dir/*
	cp $xfmd/$weblogictar
	tar xf $weblogictar && ls -al
	value_all $? "tar"
	#修改bsu.sh文件参数
	if [ "$os_type" == "Linux" ]; then
		sed -i "s/Xmx.*m/-Xmx.5120m/g" $r_path/utils/bsu/bsu.sh
	elif [ "$os_type" == "AIX" ]; then
		cat $r_path/utils/bsu/bsu.sh | sed 's/Xmx.*m/-Xmx.5120m/g' | tee $r_path/utils/bsu/bsu.sh
	fi
	cat $r_path/utils/bsu/bsu.sh
	cd $r_path/utils/bsu
	echo "*** 安装补丁 $upBanBen ***"
	up_Banben
	if [ $? -eq 1 ]; then
		rm_banben
		up_Banben
		if [ $?-eq 0 ]; then
			return 0
		else
			return 1
		fi
	elif [ $? -eq 2 ]; then
		echo "*** you can: cat  $tmp_path/patch_list.log find the problem ***"
		return 0
	fi
	# rm -rf $tmp_path	
}
#------可修改参数---------
#版本编号
upBanBen=xxxx
#升级版本包
weblogictar=weblgic-1.tar
up_weblogic
if [ $? -eq 0 ]; then
	echo "$upBanBen ok"
else
	export LANG=$lang_value
	echo "$upBanBen error !! " && exit 1
fi
#-------服务启动
echo "up services Admin XXXX"
#启动脚本目录
sh $r_path/bin/startAdmin.sh
value_all $? "Admin Server" "please restart"


©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页