更新-----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