Clusterware Console脚本分享

本文分享了一个用于简化Clusterware和RAC测试过程中节点控制的脚本。该脚本可在单一界面上实现对整个集群节点的操作,包括启动/停止堆栈、检查状态等,并支持Linux、Solaris等多个平台。


『作者:RickyZhu 转载务必注明出处和作者』

做Clusterware和RAC的测试的时候,节点多的时候,需要不停的在节点之间切换,而且容易出错,于是写了这样一个脚本,跟大家分享一下。
目前主要完成一些简单的功能,支持的平台有Linux,Solaris, AIX and HP,打算继续扩展。也欢迎使用并提出意见,

[ractest@sun880-1 ~]$ more console
#!/bin/bash

#This script is used to control the whole cluster nodes in one interface

echo "******************************************************************"
echo " Welcome to Cluster Console "
echo " "
echo "The console is used to control the whole cluster nodes in one node"
echo "now it can support start/stop stack,check stack status, process "
echo "priority, check node uptime and will support more in the future "
echo " "
echo " Any bug or comment please report to ricky.zhu@gmail.com "
echo "******************************************************************"

get_nodename () {
$CH/bin/olsnodes -n > tmp
name=`head -n $1 tmp | tail -1 | awk ‘{print $1}’`
echo "$name"
}
check_uptime() {

nl=`$CH/bin/olsnodes `
for node in $nl
do
echo "node=$node"
$RSH $node "hostname; date; /usr/bin/uptime"
done
}

UNAME=‘/bin/uname’
PLATFORM=`$UNAME`
<a id="more-444"></a>
case $PLATFORM in
SunOS)
RSH=/usr/bin/rsh
SSH=/usr/bin/ssh
GREP=/usr/xpg4/bin/grep
PSEF="/usr/bin/ps -cafe"
;;
Linux)
RSH=/usr/bin/rsh
SSH=/usr/bin/ssh
GREP=/bin/grep
PSEF="/bin/ps -cafe"
;;
HP-UX)
RSH=/usr/bin/remsh
SSH=/usr/bin/ssh
GREP=/usr/bin/grep
PSEF="/usr/bin/ps -afe"
CH=$CRS_HOME
;;
AIX)
RSH=/bin/rsh
SSH=/bin/ssh
GREP=/bin/grep
PSEF="/bin/ps -afe"
CH=$CRS_HOME
;;
esac


nodelist=`$CH/bin/olsnodes`
nl="$nodelist All"

PS3="Please select node: "
TITLE="\******************************************************************/"

select node in $nl
do
PS3="Please select command: "
# name=`get_nodename $node`
name=$node

if [[ $node == "All" ]]
then
select command in "Start the crs stack" "Stop the crs stack" "Back" "Quit"
do
case $command in
"Start the crs stack")
echo $TITLE
echo "Now to start crs on node: $name"
for name in $nodelist
do
$RSH $name "hostname; date; $CH/bin/crsctl start crs"
done
echo $TITLE
;;
"Stop the crs stack")
echo $TITLE
echo "Now to stop crs on node: $name"
for name in $nodelist
do
$RSH $name "hostname; date; $CH/bin/crsctl stop crs"
done
echo $TITLE
;;
"Back")
PS3="Please select node: "
echo "Back to cluster node list"
break
;;
Quit)
echo "Quit. Thanks for using."
exit 0
;;
esac
done
fi

$RSH $name date
if [[ $? == 0 ]]
then
RSH=$RSH
else
RSH=$SSH
fi


select command in "Start the crs stack" "Stop the crs stack" "Check stack status" "Check process priority" "Check node uptime" "
Back to nodelist" "User command" "Enable the crs next reboot" "Disable the crs next reboot" "Stop ASM instance" "Start ASM instance"
"Start nodeapps" "Stop nodeapps" "Start listener" "Stop listener" "Quit"
do
case $command in
"Start the crs stack")
echo $TITLE
echo "Now to start crs on node: $name"
$RSH $name "hostname; date; $CH/bin/crsctl start crs"
echo $TITLE
;;
"Stop the crs stack")
echo $TITLE
echo "Now to stop crs on node: $name"
$RSH $name "hostname; date; $CH/bin/crsctl stop crs"
echo $TITLE
;;
"Check stack status")
echo $TITLE
echo "Now to check crs on node: $name"
$RSH $name "hostname; date; $CH/bin/crs_stat -t -v"
echo $TITLE
;;
"Check process priority")
echo $TITLE
echo "Now check priority on node: $name"
$RSH $name "hostname;date; $PSEF | $GREP -e lmon -e dlm -e ucmm -e ocssd.bin -e oclsomon -e oprocd -e oclsvmon -e lms -e lmo
n | $GREP -v grep | $GREP -v tail"
echo $TITLE
;;
"Check node uptime")
echo $TITLE
echo "Now check all node uptime"
check_uptime;
echo $TITLE
;;
"User command")
echo $TITLE
echo "Input your command"
read cmd
source .profile; $RSH $name "hostname; date; $cmd"
echo $TITLE
;;
"Back to nodelist")
PS3="Please select node: "
echo "Back to cluster node list"
break
;;
"Enable the crs next reboot")
echo $TITLE
echo "Now enable crs on next reboot on node: $name"
$RSH $name "hostname;date; /etc/init.d/init.crs enable"
echo $TITLE
;;
"Disable the crs next reboot")
echo $TITLE
echo "Now disable crs on next reboot on node: $name"
$RSH $name "hostname;date; /etc/init.d/init.crs disable"
echo $TITLE
;;
"Stop ASM instance")
echo $TITLE
echo "Now stop ASM instance on node: $name"
$RSH $name "hostname;date; $CH/bin/srvctl stop asm -n $name"
echo $TITLE
;;
"Start ASM instance")
echo $TITLE
echo "Now start ASM instance on node: $name"
$RSH $name "hostname;date; $CH/bin/srvctl start asm -n $name"
echo $TITLE
;;
"Start nodeapps")
echo $TITLE
echo "Now start nodeapps on node: $name"
$RSH $name "hostname;date; $CH/bin/srvctl start nodeapps -n $name"
echo $TITLE
;;
"Stop nodeapps")
echo $TITLE
echo "Now stop nodeapps on node: $name"
$RSH $name "hostname;date; $CH/bin/srvctl stop nodeapps -n $name"
echo $TITLE
;;
"Stop listener")
echo $TITLE
echo "Now stop listener on node: $name"
$RSH $name "hostname;date; $CH/bin/srvctl stop listener -n $name"
echo $TITLE
;;
"Start listener")
echo $TITLE
echo "Now start listener on node: $name"
$RSH $name "hostname;date; $CH/bin/srvctl start listener -n $name"
echo $TITLE
;;
Quit)
echo "Quit. Thanks for using."
exit 0
;;
*)
echo "$REPLY is not one of your choice" 1>&2
;;
esac
done
done

本文来源于天行健,君子以自强不息 http://www.rickyzhu.com , 原文地址: http://www.rickyzhu.com/444_cluster-console-script.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值