#!/bin/sh . /etc/init.d/functions VIP=10.10.10.12 NETMASK=255.255.255.255 NETWORK=lo Path=/proc/sys/net/ipv4/conf NETCMD=$(ifconfig $NETWORK:0 $VIP netmask $NETMASK) check_lo=$(ifconfig $NETWORK:0|grep "$VIP"|wc -l) check_route=$(route -n |grep "$VIP"|wc -l) start(){ if [ "$check_lo" -eq "1" -a "$check_route" -eq "1" ];then echo "Virtual IP is running....." else ifconfig $NETWORK:0 $VIP netmask $NETMASK up route add -host $VIP dev $NETWORK echo "1" >$Path/lo/arp_ignore echo "2" >$Path/lo/arp_announce echo "1" >$Path/all/arp_ignore echo "2" >$Path/all/arp_announce RETVAL1=$? if [ $RETVAL1 -eq 0 ];then action "Virtual IP startd....." /bin/true else action "Virtual IP startd....." /bin/false fi fi } stop(){ if [ "$check_lo" -eq "1" -a "$check_route" -eq "1" ];then ifconfig $NETWORK:0 $VIP netmask $NETMASK down route del -host $VIP dev $NETWORK array=( ignore announce ) for ((i=0;i<${#array[*]};i++)) do echo "0" >$Path/lo/arp_${array[$i]} echo "0" >$Path/all/arp_${array[$i]} done RETVAL2=$? if [ $RETVAL2 -eq 0 ];then action "Virtual IP is stopped....." /bin/true else action "Virtual IP is stopped....." /bin/false fi else echo "Virtual IP is not running....." fi } case "$1" in start) start ;; stop) stop ;; restart) stop sleep 2 start ;; *) echo "USAGE: $0 {start|stop|restart}" ;; esac