由于需要,将IP作为双机热备的资源,特别写了IP启动停止的脚本。


#!/bin/bash

IP=192.168.1.100-120/24,192.168.2.1-10/24,192.168.3.10


network="eth0:2"


network_let (){

NETWORK_NUM=`echo "$1"|awk -F ':' '{print $2}'`

NETWORK_PREDIX=`echo "$1"|awk -F ':' '{print $1}'`

let NETWORK_NUM=$NETWORK_NUM+1

network=""$NETWORK_PREDIX":"$NETWORK_NUM""

}

case $1 in


start)

for ip in `echo $IP|sed "s:,: :g"`

do

if [ -z `echo $ip|grep -` ]; then


 ifconfig $network $ip up && echo "$network $ip up"

 network_let $network

else

 IP_PREFIX=`echo "$ip"|awk -F '-' '{print $1}'|awk -F '.' '{print $1"."$2"."$3}'`

 IP_SUFFIX_START=`echo "$ip"|awk -F '-' '{print $1}'|awk -F '.' '{print $NF}'`

 IP_SUFFIX_END=`echo "$ip"|awk -F '-' '{print $2}'|awk -F '/' '{print $1}'`

 IP_NETMASK=`echo "$ip"|awk -F '-' '{print $2}'|awk -F '/' '{print $2}'`

 for((i=$IP_SUFFIX_START;i<=$IP_SUFFIX_END;i++))

 do

ifconfig $network $IP_PREFIX.$i/$IP_NETMASK up && echo "$network $IP_PREFIX.$i/$IP_NETMASK up"

network_let $network

 done

fi

done

;;

stop)

for ip in `echo $IP|sed "s:,: :g"`

       do

               if [ -z `echo $ip|grep -` ]; then


                 ifconfig $network $ip down && echo "$network $ip down"

                 network_let $network

               else


                 IP_PREFIX=`echo "$ip"|awk -F '-' '{print $1}'|awk -F '.' '{print $1"."$2"."$3}'`

                 IP_SUFFIX_START=`echo "$ip"|awk -F '-' '{print $1}'|awk -F '.' '{print $NF}'`

                 IP_SUFFIX_END=`echo "$ip"|awk -F '-' '{print $2}'|awk -F '/' '{print $1}'`

                 IP_NETMASK=`echo "$ip"|awk -F '-' '{print $2}'|awk -F '/' '{print $2}'`

                 for((i=$IP_SUFFIX_START;i<=$IP_SUFFIX_END;i++))

                 do

                       ifconfig $network $IP_PREFIX.$i/$IP_NETMASK down && echo "$network $IP_PREFIX.$i/$IP_NETMASK down"

                       network_let $network

                 done

               fi

       done

       ;;

*)

echo "Usage:$0 (start|stop)"

;;

esac


注:脚本只支持掩码大于等于24的IP