Latest Entries »

weblogic10.3.6自动打补丁脚本

#!/bin/bash

MW_HOME=”/home/weblogic/Oracle/Middleware”
PATCH_FILE=”p33172858_1036_Generic.zip”
PATCH_TO_REMOVE=”21Y4″

# echo “Empty cache_dir”
rm -f ${MW_HOME}/utils/bsu/cache_dir/*

# echo “Download patch file”
wget http://10.1.1.1/weblogic/${PATCH_FILE}
unzip ${PATCH_FILE}

PATCH=`ls *.jar | cut -d’.’ –complement -f2-`
CATALOG=`ls patch-catalog*.xml`

# echo “Patch”
echo “PATCH=$PATCH”
echo “CATALOG=$CATALOG”

cp ${PATCH}.jar ${MW_HOME}/utils/bsu/cache_dir/.
cp ${CATALOG} ${MW_HOME}/utils/bsu/cache_dir/patch-catalog.xml

cd ${MW_HOME}/utils/bsu
#./bsu.sh -view -status=applied -prod_dir=${MW_HOME}/wlserver_10.3

if [ -n “$PATCH_TO_REMOVE” ]; then
${MW_HOME}/utils/bsu/bsu.sh -remove -prod_dir=${MW_HOME}/wlserver_10.3 -patchlist=${PATCH_TO_REMOVE} -verbose
fi

${MW_HOME}/utils/bsu/bsu.sh -prod_dir=${MW_HOME}/wlserver_10.3 -patchlist=${PATCH} -verbose -install

. ${MW_HOME}/wlserver_10.3/server/bin/setWLSEnv.sh
java weblogic.version

# 假设A服务器为源文件,B服务器为接收A推送文件的目标服务器。
# A服务器创建无密码的公钥
#ssh-keygen -f ~/.ssh/id_rsa -q -P “”
# A的公钥拷贝到B服务器,实现登录免密
#scp ~/.ssh/id_rsa.pub [email protected]/home/user/.ssh/authorized_keys

if [ -f /var/tmp/rsync_updates ]; then
echo “Updates via rsync already running.”
exit 0
fi

if [ -d /home/update/centos7 ] ; then
touch /var/tmp/rsync_updates

# 同步tsinghua的centos7最新包
rsync -aqzSHP –delete –exclude “local*” –exclude “isos” –exclude “atomic” –exclude “cloud” –exclude “dotnet” –exclude “configmanagement” –exclude “cr” –exclude “fasttrack” –exclude “infra” –exclude “messaging” –exclude “nfv” –exclude “opstools” –exclude “paas” –exclude “rt” –exclude “sclo” –exclude “storage” –exclude “virt” mirrors.tuna.tsinghua.edu.cn::centos/7/ /home/update/centos7/

# 同步tsinghua的epel7最新包
rsync -aqzSHP –delete –exclude “local*” –exclude “SRPMS” –exclude “aarch64” –exclude “ppc64” –exclude “ppc64le” –exclude “source” mirrors.tuna.tsinghua.edu.cn::epel/7/ /home/update/epel7/

# 推送centos7的最新包到下游更新服务器
rsync -aqzSHP –delete -e ‘ssh -p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null’ /home/update/centos7/ [email protected]:/home/user/www/centos7/

# 推送epel7的最新包到下游更新服务器
rsync -aqzSHP –delete -e ‘ssh -p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null’ /home/update/epel7/ [email protected]:/home/user/www/epel7/
/bin/rm -f /var/tmp/rsync_updates
else
echo “Target directory /home/update/centos7 not present.”
fi

============BTW:rsync参数说明
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-S, –sparse 对稀疏文件进行特殊处理以节省DST的空间
-H, –hard-links 保留硬链结
-P, -partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
-z, –compress 对备份的文件在传输时进行压缩处理

echo $JAVA_HOME

./opatch apply -silent -jre $JAVA_HOME/jre

weblogic10.3.6卸载补丁脚本

#!/bin/bash
BSU_PACH=/home/weblogic/Oracle/Middleware/utils/bsu
WLSHOME_PACH=/home/weblogic/Oracle/Middleware/wlserver_10.3

# 将获取到的补丁jar包放入临时的文件,方便后续卸载
cd ${BSU_PACH} && ./bsu.sh -prod_dir=${WLSHOME_PACH} -status=applied -verbose -view | grep jar > tmp_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 ${BSU_PACH} && ./bsu.sh -remove -patchlist=${jar_name} -prod_dir=${WLSHOME_PACH}
done

#!/bin/bash
BSU_PACH=/home/weblogic/Oracle/Middleware/utils/bsu
WLSHOME_PACH=/home/weblogic/Oracle/Middleware/wlserver_10.3
PKG_PACH=ftp://10.1.1.1/patch/weblogic/10.3.6/
PKG_NAME=p33172858_1036_Generic.zip

# 判断清空旧文件夹中内容或创建补丁文件夹
if [ -d ${BSU_PACH}/cache_dir ];then
cd ${BSU_PACH}/cache_dir; rm -rf *
else
mkdir -p ${BSU_PACH}/cache_dir
fi

# PKG_NAME是补丁包名称
cd ${BSU_PACH}/cache_dir && curl -o ./${PKG_NAME} ${PKG_PACH}/${PKG_NAME}

# 解压补丁包
cd ${BSU_PACH}/cache_dir && unzip *.zip

#更改bsu.sh脚本中的内存参数,提高打补丁速度
if [ -f ${BSU_PACH}/bsu.sh.bak ];then
echo “bsu has changed.”
else
cp ${BSU_PACH}/bsu.sh ${BSU_PACH}/bsu.sh.bak
cd ${BSU_PACH} && sed -i ‘5c MEM_ARGS=”-Xms4096m -Xmx4096m -XX:-UseGCOverheadLimit”‘ ./bsu.sh
fi

#停服务
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 “weblogic process is not exsits”
fi

#打补丁:
cd ${WLSHOME_PACH}/server/bin && source setWLSEnv.sh
cd ${BSU_PACH}/cache_dir && PK=$(ls -lt *.jar | head -n 1 | awk ‘{print $NF}’ | awk -F “.” ‘{print $1}’)
cd ${BSU_PACH} && ./bsu.sh -install -patch_download_dir=${BSU_PACH}/cache_dir -patchlist=${PK} -prod_dir=${WLSHOME_PACH}

#启动weblogic服务
#nohup /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/bin/startWebLogic.sh &

#!/bin/bash
export ORACLE_HOME=/home/weblogic/Oracle/Middleware/Oracle_Home
OP_PACH=${ORACLE_HOME}/OPatch
PKG_PATCH=ftp://10.1.1.1/patch/weblogic/12.1.3
PKG_NAME=p33172866_121300_Generic.zip
linshi=/home/weblogic/patch

# 创建新文件夹
if [[ -d ${linshi} ]];then
rm -rf ${linshi}
else
mkdir -p ${linshi}
fi

# 获取补丁包
cd ${linshi} && curl -o ./${PKG_NAME} ${PKG_PATCH}/${PKG_NAME}

# 解压
which unzip &> /dev/null
if [[ $? -eq 0 ]];then
unzip ${linshi}/*.zip -d ${linshi};
else
echo “unzip is not exsits, yum install it first, plz”
fi

# 停止weblogic服务
ps -ef | grep java| grep weblogic | grep -v “grep” &> /dev/null
if [[ $? -eq 0 ]];then
ps -ef |grep java| grep weblogic | grep -v “grep”|awk ‘{print $2}’|xargs kill -9
else
echo “weblogic process is not exsits”
fi

# 打补丁
PKG_NAME=$(cd ${linshi} && ls | grep -Ev ‘*.zip’)
cd ${linshi}/${PKG_NAME} && ${OP_PACH}/opatch apply -silent

# 启动weblogic
#nohup ${ORACLE_HOME}/user_projects/domains/base_domain/startWebLogic.sh &

#!/bin/bash
# 安装EPEL
yum -y localinstall ftp://10.1.1.1/epel-release-latest-7.noarch.rpm

# 更新REPO文件为内网源
curl -o /etc/yum.repos.d/CentOS-Base.repo ftp://10.1.1.1/centos7.repo
curl -o /etc/yum.repos.d/epel.repo ftp://10.1.1.1/epel7.repo

# 卸载rh自带包
yum -y remove rhnlib redhat-support* subscription-manager
rpm -e –nodeps redhat-release-server redhat-logos
rm -rf /usr/share/redhat-release* /usr/share/doc/redhat-release*

# 安装centos重要文件
yum -y install centos-release yum centos-logos
yum clean all
yum -y update

# 禁用墙
systemctl disable firewalld

centos安装docker

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

============
1、删除旧版
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2、用稳定版的更新源
yum install -y yum-utils
yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

3、安裝Docker引擎
yum install docker-ce docker-ce-cli containerd.io

4、启动Docker
systemctl enable docker
systemctl start docker

5、测试
docker run hello-world

6、升级docker引擎
yum -y upgrade

7、删除docker引擎
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

BTW:安装特殊版本的docker引擎
# 从高到低列出版本
yum list docker-ce –showduplicates | sort -r
# yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
yum install docker-ce- docker-ce-cli- containerd.io
———-
2、拉取CentOS镜像
docker run -d -p 2222:22 –name CentOS-Docker ilemonrain/centos-sshd

参数说明
-d:以Daemon(后台)模式启动镜像
-p 2222:22:暴露宿主机的2222端口,映射到容器内部的22端口 (SSH)
–name CentOS-Docker:容器名称
ilemonrain/centos-sshd:镜像名称

===========
安裝docker-compose
# 安装
curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
# 付权
chmod +x /usr/local/bin/docker-compose
# 建立快捷方式,以便环境变量加载
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 测试安装成功
docker-compose –version

PS:https://docs.docker.com/engine/install/centos/

扩充LVM逻辑磁盘

磁盘区群组: DiskGroup
逻辑磁盘区: DiskHome
要新增的实体存储设备: 属於LVM类型的 /dev/sda5

1、创建PV物理卷
pvcreate /dev/sda5

2、扩充VG卷组
lvm vgextend “DiskGroup” /dev/sda5

3、查看VG卷组信息
vgdisplay

4、查看LVM逻辑卷信息
lvdisplay /dev/DiskGroup/DiskHome

5、扩充磁盘。如果是增加空间,可以用:lvextend -l +100%FREE
lvresize -L +4G /dev/DiskGroup/DiskHome

6、更改文件系统尺寸
EXT4格式:
resize2fs /dev/DiskGroup/DiskHome
XFS格式:
xfs_growfs /dev/DiskGroup/DiskHom

yum install samba
systemctl enable samba

创建samba用户之前,必须先确保有一个同名的Linux用户,否则samba用户会创建失败
smbpasswd -a username
# smbpasswd -a 增加用户(要增加的用户必须以是系统用户)
# smbpasswd -d 冻结用户,就是这个用户不能在登录了
# smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用
# smbpasswd -n 把用户的密码设置成空.要在global中写入 null passwords -true
# smbpasswd -x 删除用户

# 行尾添加共享路径
vi /etc/samba/smb.conf
[share] #共享名,最后连接地址为 \\IP\share
comment = smb share test # 该共享的备注
path = /home/share # 共享路径
allow hosts = host(subnet) # 设置该Samba服务器允许的工作组或者域
deny hosts = host(subnet) # 设置该Samba服务器拒绝的工作组或者域
available = yes|no # 设置该共享目录是否可用
browseable = yes|no # 设置该共享目录是否可显示
writable = yes|no # 指定了这个目录缺省是否可写
public = yes|no # 指明该共享资源是否能给游客帐号访问
user = user, @group # user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开
valid users = user, @group # 指定能够使用该共享资源的用户和组
invalid users = user, @group # 指定不能够使用该共享资源的用户和组
read list = user, @group # 指定只能读取该共享资源的用户和组
write list = user, @group # 指定能读取和写该共享资源的用户和组
admin list = user, @group # 指定能管理该共享资源(包括读写和权限赋予等)的用户和组
sync always = yes|no # 指明对该共享资源进行写操作后是否进行同步操作
short preserve case = yes|no # 指明是否区分文件名大小写
preserve case = yes|no # 指明是否保持大小写
case sensitive = yes|no # 指明是否对大小写敏感,一般选no,不然可能引起错误
mangle case = yes|no # 指明混合大小写
default case = upper|lower # 指明缺省的文件名是全部大写还是小写
force user = testuser # 强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= testuser强制建立文件的属主是testuser,同时限制create mask = 0755,这样guest就不能删除了
wide links = yes|no # 指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用
max connections = 100 # 设定最大同时连接数
delete readonly = yes|no # 指明能否删除共享资源里面已经被定义为只读的文件

查看已启用的samba账户
pdbedit -L -v

============
ex:
# 表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50
hosts allow=172.17.2.EXCEPT172.17.2.50
# 表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接
hosts allow=172.17.2.0/255.255.0.0
# 表示容许来自M1和M2两台计算机连接
hosts allow=M1,M2
# 表示容许来自SC域的所有计算机连接
hosts allow=@SC

————-
samba安全认证:
share:可以匿名访问
user:通过本地的账户和密码验证来提供服务
server:集中身份验证,kebers
AD:通过AD对账户密码进行验证。