更新-----Scripts:执行双网卡绑定


更新-----Scripts:执行双网卡绑定
 
[python] 
#!/bin/bash  
#-------------------------------------------------------------------------------  
# Name:      netbond  
# Filename : netbond.sh  
# Local:       
  
# What:      用于双网卡绑定  
# HowTo :    sh ./netbond.sh ethN ethN bondN ipaddr netmask gateway  
  
# Version   : 1.1 2013.9.6 对输入进行判断,因为已经发生过一次输入错误导致配置失败  
#             1.0 2013.9.3  
# Release   : 2013-9-3  
# Author    : Gtlions  
# Copyright : Copyright (c) Gtlions 2013 <gtlions.l@gmail.com>     
# Licence   : <Gtlions's licence>  
#-------------------------------------------------------------------------------  
echo "You are logged in as `whoami`";   
if [ `whoami` != root ]; then   
    echo "Must be logged as root run script."   
    exit 1  
fi   
  
if [ x$5 = x ]; then  
    echo "Input Error!"  
    echo "Usage: sh ./netbond.sh ethN ethN bondN ipaddr netmask gateway"  
    exit 1  
fi  
SCRIPTFILE=$0  
ETHN1=$1  
ETHN2=$2  
BONDN=$3  
IPADDR=$4  
NETMASK=$5  
GATEWAY=$6  
ETHN1FILE=/etc/sysconfig/network-scripts/ifcfg-$ETHN1  
ETHN2FILE=/etc/sysconfig/network-scripts/ifcfg-$ETHN2  
BONDFILE=/etc/sysconfig/network-scripts/ifcfg-$BONDN  
ETHN1BAK=ifcfg-$ETHN1.bak  
ETHN2BAK=ifcfg-$ETHN2.bak  
  
if [ `echo $ETHN1 |grep 'eth'|wc -l` -eq 0 ]; then  
        echo "Input Error: ethN1"  
fi  
  
if [ `echo $ETHN2 |grep 'eth'|wc -l` -eq 0 ]; then  
        echo "Input Error: ethN2"  
fi  
  
if [ `echo $BONDN |grep 'bond'|wc -l` -eq 0 ]; then  
        echo "Input Error: bondN"  
fi  
  
  
#if [ `echo $IPADDR |awk -F'.' '{print NF-1}'` -eq 3 ]; then  
#       :  
#else  
#       echo "Input Error: ipaddr"  
#fi  
  
if [ `echo $IPADDR|grep '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$'|wc -l` -eq 0 ] ; then  
        echo "Input Error: ipaddr"  
fi  
if [ `echo $NETMASK|grep '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$'|wc -l` -eq 0 ] ; then  
        echo "Input Error: netmask"  
fi  
if [ `echo $GATEWAY|grep '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$'|wc -l` -eq 0 ] ; then  
        echo "Input Error: gateway"  
fi  
  
if [ ! -f $ETHN1FILE ]; then  
    echo "Error!Not exist $ETHN1FILE"  
    exit 1  
fi  
if [ ! -f $ETHN2FILE ]; then  
    echo "Error!Not exist $ETHN2FILE"  
    exit 1  
fi  
if [ -f $BONDFILE ]; then  
    echo "Error!Exist $BONDFILE"  
    exit 1  
fi  
  
echo "Set Info: $ETHN1 AND $ETHN2 will bond to $BONDN : $IPADDR,$NETMASK,$GATEWAY"  
echo "Go On?[Y/N]"  
read GOON  
GOON1=`echo $GOON |tr 'a-z' 'A-Z'|cut -c1`  
if [ $GOON1 = "Y" ]; then  
      
    cp $ETHN1FILE ETHN1BAK  
    cp $ETHN2FILE ETHN2BAK  
    if [ -f ETHN1BAK ] && [ -f ETHN2BAK ] ; then  
        echo -e "DEVICE=$BONDN\nONBOOT=yes\nTYPE=Ethernet\nUSERCTL=yes\nBOOTPROTO=static\nIPADDR=$IPADDR\nNETMASK=$NETMASK\nGATEWAY=$GATEWAY">$BONDFILE  
        chmod 644 $BONDFILE  
        echo -e "DEVICE=$ETHN1\nONBOOT=yes\nBOOTPROTO=none\nTYPE=Ethernet\nUSERCTL=yes\nMASTER=$BONDN\nSLAVE=yes">$ETHN1FILE  
        echo -e "DEVICE=$ETHN2\nONBOOT=yes\nBOOTPROTO=none\nTYPE=Ethernet\nUSERCTL=yes\nMASTER=$BONDN\nSLAVE=yes">$ETHN2FILE  
          
        cat /etc/modprobe.conf |grep "$BONDN">null  
        RESULT=$?  
  
        if [ $RESULT -eq 1 ] ; then  
            echo -e "alias $BONDN bonding\noptions $BONDN miimon=100 mode=1">>/etc/modprobe.conf  
        fi  
          
        cat /etc/rc.d/rc.local|grep "$BONDN">null  
        RESULT=$?  
      
        if [ $RESULT -eq 1 ] ; then  
            echo -e "ifenslave $BONDN $ETHN1 $ETHN2">>/etc/rc.d/rc.local  
        fi  
  
        echo "Done!Pls reboot system!"  
    fi  
else  
    echo "Cancel!"  
fi  
 

相关内容

    暂无相关文章