Listing 5 /etc/ha.d/mon/mon.d/peer.monitor
/etc/ha.d/mon/mon.d/peer.monitor
#!/bin/ksh -x
. /etc/ha.d/shellfuncs
DB2HADRDBNAMES="WSI811"
tempHost=$(echo $HOSTNAME)
case $tempHost in
db01.wsirnd.com)
DB2INST=db2inst1
TODO="/etc/ha.d/resource.d/db2 stop"
REMOTEHOST=db02.wsirnd.com;;
db02.wsirnd.com)
DB2INST=db2inst1
TODO=
REMOTEHOST=db01.wsirnd.com;;
esac
exit=0
# First, ping to make sure that we can get to the remote host
/etc/ha.d/mon/mon.d/fping.monitor $REMOTEHOST
if [ $? -eq 0 ]
logger -i -p info -t $0 "INFO: $REMOTEHOST is responding to ping"
else
logger -i -p info -t $0 "ERROR: Cannot contact $REMOTEHOST with ping!"
exit=1
fi
# We made it past the ping test, so check if we're still Standby
if [ $exit -eq 0 ]
then
for DB2HADRDBNAME in $DB2HADRDBNAMES
do
hadrRole=$(su - $DB2INST -c "db2 get snapshot for all on \
$DB2HADRDBNAME" |grep -i "Role" |awk '{print $3 }')
if [[ $hadrRole = "Standby" ]];
then
logger -i -p notice -t $0 "I am $hadrRole for db $DB2HADRDBNAME!"
exit=`expr $exit + 1`
fi
done
if [ $exit -eq 0 ]
logger -i -p info -t $0 "I am primary on all DBs"
else
logger -i -p info -t $0 "ERROR: I have not taken over Primary on all DBs!"
fi
fi
if [ $exit -eq 0 ]
then
if test "$TODO"
then
$todo=$(su - $DB2INST -c "$TODO")
fi
fi
exit $exit
|