shell脚本

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:
自用shell脚本
#!/bin/bash
#2011-09-07 zhaoyun write
while [ 1 ] 
do
NULL=/dev/null
status=`cat /etc/keepalived/keepalived.conf |grep state |awk '{print $2}'`
echo $status > .status
VIP=`cat /etc/keepalived/keepalived.conf |sed -n '15p' | awk -F/.* '{print $1}'`
INTERFACE=`cat /etc/keepalived/keepalived.conf |grep interface |awk '{print $2}'`
RUNTIME=3
TRUSTRUN=`nc -vv -z localhost 6443 2>$NULL ; echo $?`
LOADFILE=/ssl/bin/LoadBalance.config
FPAT=/ssl/bin/LoadBalance.config.bak
LOADFILEOK=`cat /etc/rc.local |grep /ssl/bin/LoadBalance.config >$NULL ; echo $?`
 if [ $LOADFILEOK -eq 1 ] ; then
sed -i '/touch/a\cp -rf /ssl/bin/LoadBalance.config.bak /ssl/bin/LoadBalance.config' /etc/rc.local 
 fi 
  
  if [ $TRUSTRUN -eq 0 ] ; then
              if [ -e $LOADFILE ] ; then
mv  $LOADFILE $FPAT
ipvsadm -C
              fi
time=`date +"%Y-%m-%d %H:%M:%S"`
status=`cat /etc/keepalived/keepalived.conf |grep state |awk '{print $2}'`
echo $status > .status
INTERFACE=`cat /etc/keepalived/keepalived.conf |grep interface |awk '{print $2}'`
NULL=/dev/null
LOG=/var/log/keepalived.log
BACKUP=`cat /ssl/bin/Vrrpd.config |grep PeerHost |awk -F'<PeerHost>' '{print $2}' |awk -F'</PeerHost>' '{print $1}'`
MASTER=`cat /ssl/bin/Vrrpd.config |grep PeerHost |awk -F'<PeerHost>' '{print $2}' |awk -F'</PeerHost>' '{print $1}'`
VIP=`cat /etc/keepalived/keepalived.conf |sed -n '15p' | awk -F/.* '{print $1}'`
STATA=`grep MASTER .status > $NULL ; echo $?`
STATB=`grep BACKUP .status > $NULL ; echo $?`
PID=`ps aux |grep "keepalived -D" | grep -v grep > $NULL ; echo $?`
touch .STA
A=`cat .STA`
PING="ping -c 3 -i 0.00000001 -w 1"
NC="nc -n -vv -z -w 1"
            if [ $PID -eq 0 ] ; then
              echo \ ; echo \ >>$LOG  
             echo $time keepalived - - - is - - - running @*****@>>$LOG 
if [ $STATA -eq 0 ] ; then
IP=`ip add list |grep $VIP >$NULL ; echo $?`
SPORT=`nc -vv -z -w 1 localhost 443 2>$NULL ; echo $?`
       if [ $IP -eq 0 ] && [ $SPORT -eq 0 ]; then
time=`date +"%Y-%m-%d %H:%M:%S"`
              echo \ ; echo \ >>$LOG  
           echo $time   vip - - - is  - - -  OK !@!@!@!  >> $LOG
              echo \ ; echo \ >>$LOG  
           echo $time status - - -  is - - - MASTER >> $LOG
        else 
           echo $INTERFACE |xargs ip addr add $VIP  dev 
              echo \ ; echo \ >>$LOG  
           echo $time add $VIP for $INTERFACE to master ok ! >>$LOG
service keepalived restart 
              echo \ ; echo \ >>$LOG  
echo $time  Sending gratuitous ARPs on $INTERFACE for $VIP >>$LOG
sleep 3
date +%s >.timea
       fi
STA=`$PING $BACKUP >$NULL  ; echo $? `
           echo $STA > .STA
         if [ $STA -eq 0 ] ; then
              echo \ ; echo \ >>$LOG  
           echo $time BACKUP - - -  is - - -  alive >> $LOG
                if [ $SPORT -eq 1 ] ; then
                    echo $INTERFACE |xargs ip addr del $VIP  dev
              echo \ ; echo \ >>$LOG  
                    echo $time remove $VIP for $INTERFACE in master ok ! >>$LOG
              echo \ ; echo \ >>$LOG  
                    echo $time  ssl_port --- is --- closed >> $LOG
              echo \ ; echo \ >>$LOG  
                fi
         fi
      if [ $A -gt 0 ] ; then
         service keepalived restart >$NULL
              echo \ ; echo \ >>$LOG  
echo $time Sending gratuitous ARPs on $INTERFACE for $VIP >>$LOG
sleep 3
date +%s >.timea       
      fi
OLDTIME=`cat .timea`
NOWTIME=`date +%s`
RTIME=`echo "$NOWTIME-$OLDTIME" | bc`
RETIME=115
       if [ $IP -eq 0 ] && [ $SPORT -eq 0 ]; then
          if [ $RTIME -gt $RETIME ] ; then
                 service keepalived restart
              echo \ ; echo \ >>$LOG  
echo $time Sending gratuitous ARPs on $INTERFACE for $VIP >>$LOG
sleep 3
date +%s >.timea
          fi
       fi
fi
#backup part
  if [ $STATB -eq 0 ] ; then 
ROUTEID=`grep 51 /etc/keepalived/keepalived.conf >/dev/null ; echo $?`
          if [ $ROUTEID -eq 0 ] ; then
sed -i '5s/51/52/' /etc/keepalived/keepalived.conf 
          fi
STB=`$PING  $MASTER  > $NULL ; echo $? `
IP=`ip add list |grep $VIP   >$NULL ; echo $?`
SSLPORT=`$NC  $MASTER 443 2>$NULL ; echo $?`
     if [ $STB -eq 0 ] && [ $SSLPORT -eq 0 ] ; then
time=`date +"%Y-%m-%d %H:%M:%S"`
              echo \ ; echo \ >>$LOG  
               echo $time MASTER - - -  is - - -  alived >> $LOG
              echo \ ; echo \ >>$LOG  
               echo $time status - - - is - - - BACKUP >> $LOG       
               echo 1 >.sta
             if [ $IP -eq 0 ] ; then
IPSTAT=`ip addr list |grep $VIP | wc -l `
         if  [ $IPSTAT -eq 2 ] ; then
                  echo $INTERFACE |xargs ip addr del $VIP dev 2>>$NULL
              echo \ ; echo \ >>$LOG  
                  echo $time  Remove $VIP for $INTERFACE in backup ok !  >>$LOG
         fi
             fi
     else       
ST=`cat .sta`
 if [ $ST -eq 1 ] ; then
service keepalived restart
              echo \ ; echo \ >>$LOG  
echo $time  Sending gratuitous ARPs on $INTERFACE for $VIP from backup 1 >>$LOG
echo 0 >.sta
 fi
        if [ $IP -eq 0 ] ; then
              echo \ ; echo \ >>$LOG  
           echo $time master - - - is - - -  shutdown >> $LOG
           echo $time   vip  - - -  is  - - -   ok >>$LOG
           echo $time  now -- status --  is --   MASTER >> $LOG
        else
time=`date +"%Y-%m-%d %H:%M:%S"`
              echo \ ; echo \ >>$LOG  
           echo $time "status is -------->>>>>>>  MASTER" >>$LOG
           echo $INTERFACE |xargs ip addr add $VIP  dev
           echo $time Add $VIP for $INTERFACE to backup ok 1 ! ! >>$LOG
service keepalived restart >$NULL
              echo \ ; echo \ >>$LOG  
echo $time  Sending gratuitous ARPs on $INTERFACE for $VIP from backup 2 >>$LOG
echo 0 >.sta
sleep 10     
        fi
     fi  
  fi
       else
time=`date +"%Y-%m-%d %H:%M:%S"`
IP=`ip add list |grep $VIP  >$NULL  ; echo $?`
       if [ $IP -eq 0 ] ; then
LINE=`wc -l $FPAT |awk '{print $1}'`
           if [ $LINE -gt 3 ] ; then
              echo \ ; echo \ >>$LOG  
             echo $time  Load balance - is -  running 1 >$NULL
             echo $time  keepalived  - - - not - - -  running 1 >>$LOG
           else 
              echo \ ; echo \ >>$LOG  
             echo $INTERFACE |xargs ip addr del $VIP dev 2> $NULL
             echo $time  keepalived  - - - not - - -  running 2 >>$LOG
           fi
       else
          echo $INTERFACE |xargs ip addr del $VIP dev 2> $NULL
              echo \ ; echo \ >>$LOG  
         echo $time  keepalived  - - - not - - -  running  3 >>$LOG
       fi
fi
#loadbalance
LINE=`wc -l $FPAT |awk '{print $1}'`
           if [ $LINE -gt 3 ] ; then
time=`date +"%Y-%m-%d %H:%M:%S"`
              echo \ ; echo \ >>$LOG  
             echo $time  Load balance - - -  is  - - -   running @*****@ >>$LOG
  if [ $STATA -eq 0 ] ; then
            if [ $PID -eq 0 ] ; then
        echo keepalived running >$NULL
            else
       IP=`ip add list |grep $VIP  >$NULL  ; echo $?`
               if [ $IP -eq 0 ] ; then
                   echo vip is ok >$NULL
               else
             echo $INTERFACE |xargs ip addr add $VIP dev 2> $NULL
                fi
            fi      
PIDLINE=`ipvsadm -L -n | wc -l`
OUTPUTIP1=`cat $FPAT | sed -n '6p' | awk -F'<Addr_Out>' '{print $2}' |awk -F'</Addr_Out>' '{print $1}'`
INPUTIP1=`cat $FPAT |sed -n '9p' | awk -F'<Addr_In>' '{print $2}' |awk -F'</Addr_In>' '{print $1}'`
OUTPUTIP2=`cat $FPAT | sed -n '15p' | awk -F '<Addr_Out>' '{print $2}' |awk -F'</Addr_Out>' '{print $1}'`
INPUTIP2=`cat $FPAT | sed -n '18p' | awk -F'<Addr_In>' '{print $2}' |awk -F'</Addr_In>' '{print $1}'`
OUTPUTPORT1=`cat $FPAT | sed -n '7p' |awk -F'<Port_Out_Uni>' '{print $2}'|awk -F'</Port_Out_Uni>' '{print $1}'`
OUTPUTPORT2=`cat $FPAT | sed -n '8p' |awk -F'<Port_Out_Bi>' '{print $2}'|awk -F'</Port_Out_Bi>' '{print $1}'`
OUTVIP=`cat /etc/keepalived/keepalived.conf |sed -n '15p' | awk -F/.* '{print $1}'`
INVIP=192.168.0.99
INFACE=eth3  
LINE=`wc -l $FPAT |awk '{print $1}'`
LINEB=`wc -l $FPAT |awk '{print $1}'` 
      
              if [ $LINEB -gt 22 ] ; then
OUTPUTIP3=`cat $FPAT |sed -n '24p'| awk -F '<Addr_Out>' '{print $2}' |awk -F'</Addr_Out>' '{print $1}'`
INPUTIP3=`cat  $FPAT |sed -n '27p'| awk -F'<Addr_In>' '{print $2}' |awk -F'</Addr_In>' '{print $1}'`
                if [ $PIDLINE -eq 3 ] ; then
              echo \ ; echo \ >>$LOG  
                          echo $time ipvsadm -  not - set  -  ok ! >>$LOG
                   if [ "$OUTPUTIP1" == "$INPUTIP1" ] ; then
ipvsadm -C
ipvsadm -A -t $OUTVIP:$OUTPUTPORT1 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP2:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP3:$OUTPUTPORT1 -g
ipvsadm -A -t $OUTVIP:$OUTPUTPORT2 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP1:$OUTPUTPORT2 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP2:$OUTPUTPORT2 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP3:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                      echo $time set - - - ipvsadm - - - ok >> $LOG
                  else
ipvsadm -C
ipvsadm -A -t $OUTVIP:$OUTPUTPORT1 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP2:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP3:$OUTPUTPORT1 -g
ipvsadm -A -t $OUTVIP:$OUTPUTPORT2 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP1:$OUTPUTPORT2 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP2:$OUTPUTPORT2 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP3:$OUTPUTPORT2 -g
ipvsadm -A -t $INVIP:$OUTPUTPORT1 -s wlc -p 900
ipvsadm -a -t $INVIP:$OUTPUTPORT1 -r $INPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $INVIP:$OUTPUTPORT1 -r $INPUTIP2:$OUTPUTPORT1 -g
ipvsadm -a -t $INVIP:$OUTPUTPORT1 -r $INPUTIP3:$OUTPUTPORT1 -g
ipvsadm -A -t $INVIP:$OUTPUTPORT2 -s wlc -p 900
ipvsadm -a -t $INVIP:$OUTPUTPORT2 -r $INPUTIP1:$OUTPUTPORT2 -g
ipvsadm -a -t $INVIP:$OUTPUTPORT2 -r $INPUTIP2:$OUTPUTPORT2 -g
ipvsadm -a -t $INVIP:$OUTPUTPORT2 -r $INPUTIP3:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                   echo $time set - - - ipvsadm - - - ok  >> $LOG  
                fi  
             else
                echo $time ipvsadm - - - is - - - alived >> $LOG
            fi
        else
                 if [ $PIDLINE -eq 3 ] ; then
              echo \ ; echo \ >>$LOG  
                   echo $time ipvsadm -  not - set  -  ok ! >>$LOG
              if [ "$OUTPUTIP1" == "$INPUTIP1" ] ; then
ipvsadm -C
ipvsadm -A -t $OUTVIP:$OUTPUTPORT1 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP2:$OUTPUTPORT1 -g
ipvsadm -A -t $OUTVIP:$OUTPUTPORT2 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP1:$OUTPUTPORT2 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP2:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                 echo $time set - - - ipvsadm - - - ok >> $LOG
            else
time=`date +"%Y-%m-%d %H:%M:%S"`
ipvsadm -C
ipvsadm -A -t $OUTVIP:$OUTPUTPORT1 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP2:$OUTPUTPORT1 -g
ipvsadm -A -t $OUTVIP:$OUTPUTPORT2 -s wlc -p 900
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP1:$OUTPUTPORT2 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP2:$OUTPUTPORT2 -g
ipvsadm -A -t $INVIP:$OUTPUTPORT1 -s wlc -p 900
ipvsadm -a -t $INVIP:$OUTPUTPORT1 -r $INPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $INVIP:$OUTPUTPORT1 -r $INPUTIP2:$OUTPUTPORT1 -g
ipvsadm -A -t $INVIP:$OUTPUTPORT2 -s wlc -p 900
ipvsadm -a -t $INVIP:$OUTPUTPORT2 -r $INPUTIP1:$OUTPUTPORT2 -g
ipvsadm -a -t $INVIP:$OUTPUTPORT2 -r $INPUTIP2:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                 echo $time set - - - ipvsadm - - - ok  >> $LOG
            fi
       else
              echo \ ; echo \ >>$LOG  
                 echo $time ipvsadm - - - is - - - alived >> $LOG  
          fi
               if [ $LINE -gt 3 ] ; then
STD=`$PING  $OUTPUTIP1 >$NULL ; echo $?`
STE=`$PING  $OUTPUTIP2 >$NULL ; echo $?`
               fi
PORTA=`$NC $OUTPUTIP1 $OUTPUTPORT1 2> $NULL ; echo $?`
PORTB=`$NC $OUTPUTIP2 $OUTPUTPORT1 2> $NULL ; echo $?`
          if [ $PORTA -eq 1 ] ; then
               echo $OUTPUTIP1 > .ipaddSTD
ipvsadm -d -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP1 2>$NULL
ipvsadm -d -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP1 2>$NULL
               echo 1 >.A
AS=`cat .A`
              if [ $AS -eq 1 ] ; then
              echo \ ; echo \ >>$LOG  
                    echo $time ipvsadm remove $OUTPUTIP1 server 1 >>$LOG
             else
                    echo log ok >$NULL
              fi
        else
VALUEIP=`wc -l .ipaddSTD |awk '{print $1}'`
                           if [ $VALUEIP -gt 0 ] ; then
STD1=`$PING $OUTPUTIP1 >$NULL ; echo $?`
PORTA=`$NC $OUTPUTIP1 $OUTPUTPORT1 2>$NULL ; echo $?`
                        if [ $STD1 -eq 0 ]  && [ $PORTA -eq 0 ] ; then
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP1:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP1:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                    echo $time $OUTPUTIP1 is alived add to ipvsadm >>$LOG
>.ipaddSTD
                           else
                                echo status ok >$NULL
                         fi
                             fi
          fi
       
                              if [ $PORTB -eq 1 ] ; then
                                   echo $OUTPUTIP2 > .ipaddSTE
ipvsadm -d -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP2 2>$NULL
ipvsadm -d -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP2 2>$NULL
echo 1 >.B
BS=`cat .B`
                     if [ $BS -eq 1 ] ; then
              echo \ ; echo \ >>$LOG  
                          echo $time ipvsadm remove $OUTPUTIP2  server 2 >>$LOG
                     else
                           echo log ok > $NULL
                     fi
                             else
VALUEIP=`wc -l .ipaddSTE |awk '{print $1}'`
                         if [ $VALUEIP -gt 0 ] ; then
STD1=`$PING $OUTPUTIP2 >$NULL ; echo $?`
PORTA=`$NC $OUTPUTIP2 $OUTPUTPORT1 2>$NULL ; echo $?`
                      if [ $STD1 -eq 0 ]  && [ $PORTA -eq 0 ] ; then
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP2:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP2:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                         echo $time  $OUTPUTIP2 is alived add to ipvsadm >>$LOG
>.ipaddSTE
                         else
                               echo status ok > $NULL
                      fi
                         fi
              fi
                                    if [ $LINEB -gt 22 ] ; then
PORTC=`$NC $OUTPUTIP3 $OUTPUTPORT1 2>$NULL ; echo $?`
STF=`$PING  $OUTPUTIP3 >$NULL ; echo $?`
                                  if [ $PORTC -eq 1 ] ; then
ipvsadm -d -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP3 2>$NULL
ipvsadm -d -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP3 2>$NULL
                                     echo $OUTPUTIP3 > .ipaddSTF
                                     echo 1 >.C
CS=`cat .C`
                                if [ $CS -eq 1 ] ; then
              echo \ ; echo \ >>$LOG  
                         echo $time ipvsadm remove $OUTPUTIP3  server 3 >>$LOG
                                else
                                    echo log ok >$NULL
                                fi
                                  else
VALUEIP=`wc -l .ipaddSTF |awk '{print $1}'`
                        if [ $VALUEIP -gt 0 ] ; then
STD1=`$PING $OUTPUTIP3 >$NULL ; echo $?`
PORTA=`$NC $OUTPUTIP3 $OUTPUTPORT1 2>$NULL ; echo $?`
                     if [ $STD1 -eq 0 ]  && [ $PORTA -eq 0 ] ; then
ipvsadm -a -t $OUTVIP:$OUTPUTPORT1 -r $OUTPUTIP3:$OUTPUTPORT1 -g
ipvsadm -a -t $OUTVIP:$OUTPUTPORT2 -r $OUTPUTIP3:$OUTPUTPORT2 -g
              echo \ ; echo \ >>$LOG  
                       echo $time $OUTPUTIP3 is alived add to ipvsadm >>$LOG
>.ipaddSTF
                        else
                              echo status ok > $NULL
                     fi
                         fi
                  fi
              fi
##
       fi
           else
              echo \ ; echo \ >>$LOG  
      echo "$time status is backup Can't use LVS !~!~! "  >> $LOG
              echo \; echo\; echo
OUTVIP=`cat /etc/keepalived/keepalived.conf |sed -n '15p' | awk -F/.* '{print $1}'`
IP=`ip add list |grep $OUTVIP >$NULL ; echo $?`
ROUTE=`route -n |grep $OUTVIP |grep lo  >$NULL; echo $?`
       if [ "$OUTPUTIP1" == "$INPUTIP1" ] ; then
                        if [ $IP -eq 0 ] && [ $ROUTE -eq 0 ] ; then
              echo \ ; echo \ >>$LOG  
                            echo $time VIP - - IS - - Set - - Up - - Ok  >$LOG">!@!@!>>$LOG
                        else
                           ifconfig lo:2 $OUTVIP netmask 255.255.255.255 up
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
              echo \ ; echo \ >>$LOG  
                              echo $time add $OUTVIP for lo:2 to backup server ok 1! >>$LOG
                              route add -host $OUTVIP dev lo:2
                        fi
       else                      
IPA=`ip add list |grep $OUTVIP >$NULL ; echo $?`
IPB=`ip add list |grep $INVIP >$NULL ; echo $?`
ROUTEA=`route -n |grep $OUTVIP |grep lo  >$NULL; echo $?`
ROUTEB=`route -n |grep $INVIP |grep lo  >$NULL; echo $?`
                        if [ "$IPA" == "$IPB" ] && [ "$ROUTEA" == "$ROUTEB" ] ; then
              echo \ ; echo \ >>$LOG  
                            echo $time VIP - - Set - - UP - -ok >>$LOG  
                        else
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
                           ifconfig lo:2 $OUTVIP netmask 255.255.255.255 up
              echo \ ; echo \ >>$LOG  
                            echo $time add $OUTVIP for lo:2 to backup server ok 2! >>$LOG
                            route add -host $OUTVIP dev lo:2
                            ifconfig lo:3 $INVIP netmask 255.255.255.255 up
                            route add -host $INVIP dev lo:3
              echo \ ; echo \ >>$LOG  
                            echo $time add $INVIP for lo:3 to backup server ok ! >>$LOG
                        fi
      fi                 
       fi
             else
ipvsadm -C   
             if [ $STATB -eq 0 ] ; then
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
             ip addr del $OUTVIP dev lo  2>$NULL
             ip addr del $INVIP dev lo   2>$NULL
             route del -host $OUTVIP dev lo 2>$NULL
             route del -host $INVIP dev lo  2>$NULL    
              echo \ ; echo \ >>$LOG  
             echo $time Load balance - is -  closed >>$LOG
             fi
             echo $time Load balance - is -  closed >>$LOG
fi
   else
   LOG=/var/log/keepalived.log
   ipvsadm -C
   echo $INTERFACE |xargs ip addr del $VIP dev 2>>$NULL
              echo \ ; echo \ >>$LOG  
   echo $time TrustMore Gateway Server Not Running >> $LOG
fi

FILE=`grep "nohup /ssl/bin/k.sh &" /etc/rc.local > $NULL ; echo $?`
    if [ $FILE -eq 0 ] ; then
       echo file ok >$NULL
    else
       echo "nohup /ssl/bin/k.sh & " >>/etc/rc.local
    fi
ls -l $LOG |awk '{print $5}' | awk '$1 > 107374182 {print$1}' >.size
SIZE=`wc -l .size | awk '{print $1}'`
    if [ $SIZE -gt 0 ] ; then
      rm -rf $LOG
    fi
sleep $RUNTIME
done


本文转自zhaoyun00 51CTO博客,原文链接:http://blog.51cto.com/zhaoyun/666226
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
1月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
318 9
|
1月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
175 2
|
4月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
218 60
|
1月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
7月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
3月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
362 1
|
5月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
127 17
|
5月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
149 4
|
5月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
317 3
|
6月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
528 25