三、实现脚本
1、自动停止WAS脚本
#!/bin/sh
#stopwas4linux.sh
#carpnet
#
#用法:stopServer <server> [options]
# options: -nowait
# -quiet
# -logfile <filename>
# -replacelog
# -trace
# -timeout <seconds>
# -statusport <portnumber>
# -conntype <connector type>
# -port <portnumber>
# -username <name>
# -password <password>
# -help
#
Basepath="/IBM/WebSphere/AppServer"
tmpappsrvs=`$Basepath/bin/serverStatus.sh -all|sed 's/ADMU0506I://g'|grep -v nodeagent|sed 's/ //g'|sed 's/:/:/g'|awk -F ':' '{ORS=" "}{print $2}'`
nullstr=`echo $tmpappsrvs|sed /^[[:space:]]*$/d`
if [ "$nullstr" = "" ]
then
echo "[`date`] 服务器实例列表还是为空:$nullstr,异常退出"
exit 0
fi
if [ "$tmpappsrvs" != " " ]
then
echo "[`date`] 开始读取`hostname`的应用服务器WAS"
echo "[`date`] 所有实例为:$tmpappsrvs"
echo "[`date`] 结束读取`hostname`的应用服务器WAS"
echo "[`date`] 开始停止`hostname`的应用服务器WAS"
count=0
for srv in $tmpappsrvs
do
count=`expr $count + 1`
echo "[`date`] 读取即将停止的应用服务器WAS实例($count)[$srv]"
$Basepath/bin/stopServer.sh $srv -quiet &
done
#停止进程过程需要一定的时间
sleep 200
echo "[`date`] 结束停止`hostname`的应用服务器WAS"
fi
exit 0
2、自动启动WAS脚本
#!/bin/sh
#startwas4linux.sh
#carpnet
#
#用法:startServer <server> [options]
# options: -nowait
# -quiet
# -logfile <filename>
# -replacelog
# -trace
# -script. [<script. filename>] [-background]
# -timeout <seconds>
# -statusport <portnumber>
# -help
#
Basepath="/IBM/WebSphere/AppServer"
tmpappsrvs=`$Basepath/bin/serverStatus.sh -all|sed 's/ADMU0506I://g'|grep -v nodeagent|sed 's/ //g'|sed 's/:/:/g'|awk -F ':' '{ORS=" "}{print $2}'`
nullstr=`echo $tmpappsrvs|sed /^[[:space:]]*$/d`
if [ "$nullstr" = "" ]
then
echo "[`date`] 服务器实例列表还是为空:$nullstr,异常退出"
exit 0
fi
if [ "$tmpappsrvs" != "" ]
then
echo "[`date`] 开始读取`hostname`的应用服务器WAS"
echo "[`date`] 所有实例为:$tmpappsrvs"
echo "[`date`] 结束读取`hostname`的应用服务器WAS"
echo "[`date`] 开始启动`hostname`的应用服务器WAS"
count=0
for srv in $tmpappsrvs
do
count=`expr $count + 1`
echo "[`date`] 读取即将启动的应用服务器WAS实例($count)[$srv]"
$Basepath/bin/startServer.sh $srv -quiet &
done
#启动进程过程需要一定的时间
sleep 200
echo "[`date`] 结束启动`hostname`的应用服务器WAS"
fi
exit 0
四、应用成效
在生产环境下,操作系统默认字符集无论是中文还是英文,通过设置定时任务,自动定时运行以上脚本,能够如你所求正常的、自动停/启WAS,而无需人工干涉。
五、结论
自动重启WAS的脚本关键是如何获取server列表,可通过WAS本身提供的命令serverStatus.sh -all后加以过滤来实现;然后通过停止、启动命令stopServer.sh、startServer.sh循环调用server列表批量停启server;再辅以操作系统crontab命令定时策略设定自动停启周期和时间,这样,通过以上三个步骤,就能够达到WAS停启的自动化目标。