#!/bin/ksh set -- `getopt s:g:h:t:l:S:u $*` # check result of parsing if [ $? != 0 ] then exit 1 fi while [ $1 != -- ] do case $1 in -h) hostNmDt=$2 shift;; -S) stat=$2 shift;; -g) grp=$2 shift;; esac shift done RULEDIR=/usr/src/linux/net/ipv4/rule IPVSADM=/usr/sbin/ipvsadm INSMOD=/sbin/insmod RMMOD=/sbin/rmmod DTOX=/home/cprakash/progs/dtox VIRTUAL_SERV=128.198.192.184 makeNewModAndIns() { set -x #echo "$*" cd $RULEDIR echo ":%s/{\"$1\".*}/{\"$1\", $2}/g" #edit rule file vi -n rule_template.c << EOF 2>&1 1> err.out  :%s/{\"$1\".*}/{\"$1\", $2}/g :wq EOF rm -f ip_cs_curr_rule.o make ip_cs_curr_rule.o if [ -e ip_cs_curr_rule.o ] then $RMMOD ip_cs_curr_rule $INSMOD ip_cs_curr_rule.o else exit 1 fi } if [ $stat = 1 ] then #up alert echo "up alert" hostNmHx=`$DTOX $hostNmDt` makeNewModAndIns $grp $hostNmHx #compile and insert of new module was a success. #Now, add this server to the lcs server group $IPVSADM -a -t $VIRTUAL_SERV:www -r $hostNmDt -m else #down alert set -x echo "down alert" #remove the host from the virtual service setup $IPVSADM -d -t $VIRTUAL_SERV:www -r $hostNmDt #get IP address of a server which is working actHostNmDt=`$IPVSADM -ln | grep -i masq | awk '{if(NR >1) exit; print $2}' | awk -F ":" '{print $1}'` echo "actHostNmHx=$actHostNmHx" #convert host name to hex actHostNmHx=`$DTOX $actHostNmDt` makeNewModAndIns $grp $actHostNmHx fi