Article Listing 1 Listing 2 Listing 3 Listing 4
Listing 5 Listing 6 Listing 7 Listing 8 Sidebar 1
Sidebar 2 jul2006.tar

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