您好,登錄后才能下訂單哦!
怎么在Linux中實(shí)現(xiàn)雙網(wǎng)卡綁定腳本?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
1.適用范圍
該shell腳本可在以下linux系統(tǒng)創(chuàng)建多個(gè)綁定網(wǎng)卡,用于生產(chǎn)環(huán)境沒問題的:
Redhat 5.x
CentOS 5.x
Kylin 3.x
KUX 2.x
2.腳本特點(diǎn)
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC :eth0 Second NIC :eth2 bond name :bond1 IP address :192.168.56.11 netmask :255.255.255.0 bonding_mode :mode=1 primary NIC :none ---------------------------------------------- Pls make sure its OK[y/n]:y
如上,腳本在使用過程中,會依次提示輸入需要綁定的子網(wǎng)卡名稱、綁定網(wǎng)卡名稱、IP地址和子網(wǎng)掩碼、綁定模式、是否指定主網(wǎng)卡,并主動對系統(tǒng)中可用網(wǎng)卡進(jìn)行識別并列出,供用戶選擇,同時(shí)會判斷輸入的各項(xiàng)信息的正確性,保障雙網(wǎng)卡綁定順利進(jìn)行。
3.使用說明
首先將腳本上傳至linux系統(tǒng)任意目錄下,使用root用戶執(zhí)行:
[root@node1 tmp]# sh bonding_v2.0.sh ---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- 4 network cards available: eth0 eth2 eth3 eth4 ---------------------------------------------- Please enter the First NIC:_
首先腳本會列出系統(tǒng)中有多少可用網(wǎng)卡,并提示輸入需要綁定的第一塊子網(wǎng)卡的名稱,這里輸入eth3。
無需擔(dān)心輸入錯(cuò)誤,輸入重復(fù)等問題,腳本會自動判斷你的輸入信息是否正確。
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- 4 network cards available: eth0 eth2 eth3 eth4 The information you have entered: First NIC : eth3 ---------------------------------------------- Please select the second NIC:_
接著輸入需要綁定的第二塊網(wǎng)卡的名稱eth4,如果輸入錯(cuò)誤會出現(xiàn)相應(yīng)的提示,比如錯(cuò)輸入為eth8,會提示需要重新輸入:
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- 4 network cards available: eth0 eth2 eth3 eth4 The information you have entered: First NIC : eth3 ---------------------------------------------- eth8 is not available,Please enter another one. Please select the second NIC:_
正確輸入需要綁定的第二塊網(wǎng)卡eth4后,如果linux系統(tǒng)中之前不存在綁定網(wǎng)卡,則默認(rèn)第一個(gè)綁定網(wǎng)卡的名稱為bond0,如果系統(tǒng)中存在綁定網(wǎng)卡,腳本會提示輸入bondN(N為數(shù)字):
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC : eth3 Second NIC : eth4 bond name : bond0 ---------------------------------------------- The default first bond name is -- bond0. Please enter an IP address:_
按照提示輸入需要綁定的IP地址,比如10.1.1.1
腳本會自動判斷輸入的IP地址格式和范圍是否正確,無需擔(dān)心輸入錯(cuò)誤
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC : eth3 Second NIC : eth4 bond name : bond0 IP address : 10.1.1.1 ---------------------------------------------- Pls enter the NETMASK[255.255.255.0]:_
輸入IP地址后,會提示輸入子網(wǎng)掩碼,默認(rèn)為255.255.255.0,直接回車即可,也可以輸入自定義的子網(wǎng)掩碼。
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC : eth3 Second NIC : eth4 bond name : bond0 IP address : 10.1.1.1 netmask : 255.255.255.0 ---------------------------------------------- Pls enter the bonding_mode[default:mode=1,active-backup]:_
這一步是輸入網(wǎng)卡綁定級別,默認(rèn)使用主備模式:mode=1,直接回車即可,也可以輸入自定義的綁定級別(如輸入 mode=6),格式為:
mode={0,1,2,3,4,5,6} ---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC :eth3 Second NIC :eth4 bond name :bond0 IP address :10.1.1.1 netmask :255.255.255.0 bonding_mode :mode=1 ---------------------------------------------- 1-eth3 2-eth4 3-none choose whether to set up the primary NIC or not[default:3-none]:_
此時(shí)腳本提示是否設(shè)置primary網(wǎng)卡,primary網(wǎng)卡的作用是在子網(wǎng)卡均正常時(shí),primary網(wǎng)卡優(yōu)先處于活動狀態(tài),這里默認(rèn)為不設(shè)置primary網(wǎng)卡,也可以輸入數(shù)字1或2選擇一個(gè)網(wǎng)卡為primary網(wǎng)卡。
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- The information you have entered: First NIC :eth3 Second NIC :eth4 bond name :bond0 IP address :10.1.1.1 netmask :255.255.255.0 bonding_mode :mode=1 primary NIC :none ---------------------------------------------- Pls make sure its OK[y/n]:_
至此,所有信息輸入完畢,腳本會讓您判斷輸入的所有信息是否正確,正確則輸入y,進(jìn)行下一步操作,否則輸入n,重新輸入以上信息。
---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- Complete! File backup directory: /etc/sysconfig/network-scripts/inspur_bak you can check the file and then restart the network service. 1 ) service network restart 2 ) exit ---------------------------------------------- Please make your choice:_
看到這里時(shí),所有綁定網(wǎng)卡的配置文件已經(jīng)修改完畢了,輸入1重啟網(wǎng)絡(luò)服務(wù);輸入2直接退出腳本。
建議選擇重啟網(wǎng)絡(luò)服務(wù),如果直接退出腳本而不重啟網(wǎng)絡(luò)服務(wù),修改的配置文件是不會生效的,并且在使用該腳本創(chuàng)建下一個(gè)綁定網(wǎng)卡時(shí)顯示信息會出現(xiàn)異常(因?yàn)槟_本通過ifconfig命令獲取當(dāng)前網(wǎng)卡信息)。
you can check the file and then restart the network service. 1 ) service network restart 2 ) exit ---------------------------------------------- Please make your choice:1 正在關(guān)閉接口 eth0: [確定] 正在關(guān)閉接口 eth2: [確定] 正在關(guān)閉接口 eth3: [確定] 正在關(guān)閉接口 eth4: [確定] 關(guān)閉環(huán)回接口: [確定] 彈出環(huán)回接口: [確定] 彈出界面 bond0: RTNETLINK answers: File exists 在 bond0 添加地址 10.1.1.1 時(shí)出錯(cuò)。 [確定] 彈出界面 eth0: [確定] 彈出界面 eth2: [確定]
第一次重啟網(wǎng)絡(luò)服務(wù)時(shí)可能會出現(xiàn)以上類似報(bào)錯(cuò),無需擔(dān)心,其實(shí)配置已經(jīng)完成,再次重啟網(wǎng)絡(luò)服務(wù)即恢復(fù)正常。
在綁定過程中修改的配置文件如下:
[root@node1 tmp]# cd /etc/sysconfig/network-scripts/ [root@node1 network-scripts]# cat ifcfg-bond0 DEVICE=bond0 BOOTPROTO=none ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes IPADDR=10.1.1.1 NETMASK=255.255.255.0 BONDING_OPTS="miimon=100 mode=1" [root@node1 network-scripts]# cat ifcfg-eth3 DEVICE=eth3 BOOTPROTO=none #HWADDR=08:00:27:41:b4:16 ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes SLAVE=yes MASTER=bond0 [root@node1 network-scripts]# cat ifcfg-eth4 DEVICE=eth4 BOOTPROTO=none #HWADDR=08:00:27:6c:3d:0c ONBOOT=yes TYPE=Ethernet USERCTL=no IPV6INIT=no PEERDNS=yes SLAVE=yes MASTER=bond0 [root@node1 network-scripts]# cat /etc/modprobe.conf alias scsi_hostadapter ata_piix alias scsi_hostadapter1 ahci alias net-pf-10 off alias ipv6 off options ipv6 disable=1 alias snd-card-0 snd-intel8x0 options snd-card-0 index=0 options snd-intel8x0 index=0 remove snd-intel8x0 { /usr/sbin/alsactl store 0 >/dev/null 2>&1 || : ; }; /sbin/modprobe -r --ignore-remove snd-intel8x0 alias eth0 e1000 alias eth2 e1000 alias eth3 e1000 alias eth4 e1000 alias bond0 bonding
網(wǎng)絡(luò)配置信息如下:
[root@node1 tmp]# ifconfig bond0 Link encap:Ethernet HWaddr 08:00:27:41:B4:16 inet addr:10.1.1.1 Bcast:10.1.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:1197 errors:0 dropped:0 overruns:0 frame:0 TX packets:125 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:106338 (103.8 KiB) TX bytes:16662 (16.2 KiB) eth0 Link encap:Ethernet HWaddr 08:00:27:35:B4:81 inet addr:192.168.56.11 Bcast:192.168.56.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1487 errors:0 dropped:0 overruns:0 frame:0 TX packets:1190 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:146576 (143.1 KiB) TX bytes:151787 (148.2 KiB) eth2 Link encap:Ethernet HWaddr 08:00:27:72:08:46 inet addr:10.1.1.11 Bcast:10.1.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:193 errors:0 dropped:0 overruns:0 frame:0 TX packets:455 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:31434 (30.6 KiB) TX bytes:22657 (22.1 KiB) eth3 Link encap:Ethernet HWaddr 08:00:27:41:B4:16 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:591 errors:0 dropped:0 overruns:0 frame:0 TX packets:93 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:55217 (53.9 KiB) TX bytes:10511 (10.2 KiB) eth4 Link encap:Ethernet HWaddr 08:00:27:41:B4:16 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:606 errors:0 dropped:0 overruns:0 frame:0 TX packets:32 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:51121 (49.9 KiB) TX bytes:6151 (6.0 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:3297 errors:0 dropped:0 overruns:0 frame:0 TX packets:3297 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4725726 (4.5 MiB) TX bytes:4725726 (4.5 MiB)
雙網(wǎng)卡綁定信息:
[root@node1 tmp]# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.4.0-2 (October 7, 2008) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth3 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth3 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:41:b4:16 Slave Interface: eth4 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:6c:3d:0c
4.腳本代碼
#!/bin/bash # Date:2018-11-26 14:28:45 # Author:ZhangJian # Mail:1037509307@qq.com # Func:Configure Network Bonding # Version:2.0 #V1.6版本更新:不再將綁定的模式mode=x寫入modprobe.conf文件,將其寫入ifcfg-bond中,因?yàn)樵趍odprobe.conf文件中時(shí),修改了mode模式后,重啟網(wǎng)絡(luò)服務(wù)可能不生效。 #V2.0版本更新:將primary網(wǎng)卡設(shè)置為可選擇項(xiàng)。 trap "tput clear;tput cup 3;echo 'Any Questions: Send a message to QQ 1037509307.';tput cup 6;exit" 2 3 if [[ -n $1 ]]; then cat <<EOF Network Configuration Assistant --- Configure Network Bonding v1.5 Usage: sh $0 chmod +x $0 && ./$0 EOF exit 0 fi if [[ $UID -ne 0 ]]; then tput clear tput cup 6 20 echo -e "You must use the user: \033[31mROOT\033[0m" tput cup 10 exit fi ERROR(){ tput cup $1 $2;tput ed echo 'Input error,Try again pls.' echo -e 'Press ENTER to continue..._\b\c' read inputA } Check_BakFile(){ #文件備份函數(shù) #使用方法: #Check_BakFile 要備份的文件名 備份目錄 -x(按什么時(shí)間格式備份) case ${3} in -d ) #按天備份 Bak_Date=`date '+%Y-%m-%d'` ;; -H ) #按小時(shí)備份 Bak_Date=`date '+%Y-%m-%d_%H'` ;; -M ) #按分鐘備份 Bak_Date=`date '+%Y-%m-%d_%H:%M'` ;; -m ) #按月備份 Bak_Date=`date '+%Y-%m'` ;; -Y ) #按年備份 Bak_Date=`date '+%Y'` ;; * ) #默認(rèn)按分鐘備份 Bak_Date=`date '+%Y-%m-%d_%H:%M'` ;; esac #Bak_Date=`date '+%Y-%m-%d-%H:%M'` [[ -d ${2}/${Bak_Date} ]] || mkdir -p ${2}/${Bak_Date} cp -ra ${1} ${2}/${Bak_Date} } bonding_pre(){ #雙網(wǎng)卡綁定前導(dǎo)函數(shù),判定網(wǎng)卡、IP等合法性并引導(dǎo)用戶正確輸入?yún)?shù)。 #全部真實(shí)網(wǎng)卡 NIC_NAME_all=`ifconfig -a | awk '/\<Ethernet\>/ {print $1}' | grep -wEv '^bond[0-9]+'` #已經(jīng)存在的綁定網(wǎng)卡 NIC_NAME_bond=`ifconfig -a | awk '/^\<bond[0-9]+\>/ {print $1}'` #打印出已經(jīng)是SLAVE的網(wǎng)卡 NIC_NAME_slave=`ifconfig -a | sed -n '/SLAVE/{g;1!p;};h' | awk '{print $1}'` NIC_NAME_slave=${NIC_NAME_slave:=NULL} #打印出可用網(wǎng)卡 NIC_NAME_free=`echo "$NIC_NAME_all" | grep -Fwv "$NIC_NAME_slave"` #可用網(wǎng)卡數(shù)量 NIC_NAME_free_nu=`echo "$NIC_NAME_free" | wc -w` declare -a NIC_LIST NIC_LIST=($NIC_NAME_free) info_print(){ tput clear;tput cup 2 cat <<EOF ---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- EOF tput cup 7 if [[ -n ${1} ]]; then echo -e "Already existing Channel Bonding Interface of the system:\n\033[31m${1}\033[0m\n" fi } if [[ "$NIC_NAME_free_nu" -gt 1 ]]; then info_print echo -e "\033[031m$NIC_NAME_free_nu\033[0m network cards available:" echo -e "\033[31m${NIC_LIST[@]}\033[0m" echo -e "----------------------------------------------\n" #輸入第一塊網(wǎng)卡的名稱 while true; do echo -e "\nPlease enter the First NIC:_\b\c" read NIC1 echo ${NIC_LIST[@]} | grep -Fw "$NIC1" &> /dev/null if [[ $? -eq 0 ]]; then info_print echo -e "\033[031m$NIC_NAME_free_nu\033[0m network cards available:\n\033[31m${NIC_LIST[@]}\033[0m" echo -e "\nThe information you have entered:\nFirst NIC : $NIC1" echo -e "----------------------------------------------\n" break else info_print echo -e "\033[031m$NIC_NAME_free_nu\033[0m network cards available:\n\033[31m${NIC_LIST[@]}\033[0m" echo -e "----------------------------------------------\n" echo -e "\033[31m${NIC1}\033[0m is not available,Please enter another one." fi done #輸入第二塊網(wǎng)卡的名稱 while true; do echo -e "\nPlease select the second NIC:_\b\c" read NIC2 if [[ ${NIC1} != ${NIC2} ]]; then echo ${NIC_LIST[@]} | grep -Fw "${NIC2}" &> /dev/null if [[ $? -eq 0 ]]; then info_print "${NIC_NAME_bond}" echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}" echo -e "----------------------------------------------\n" break else info_print echo -e "\033[031m$NIC_NAME_free_nu\033[0m network cards available:\n\033[31m${NIC_LIST[@]}\033[0m\n\nThe information you have entered:\nFirst NIC : ${NIC1}" echo -e "----------------------------------------------\n" echo -e "\033[31m${NIC2}\033[0m is not available,Please enter another one." fi else info_print echo -e "\033[031m${NIC_NAME_free_nu}\033[0m network cards available:\n\033[31m${NIC_LIST[@]}\033[0m\n\nThe information you have entered:\nFirst NIC : ${NIC1}" echo -e "----------------------------------------------\n" echo -e "\033[31m${NIC2}\033[0m is the first NIC,Please enter another one." fi done #輸入綁定網(wǎng)卡名稱并進(jìn)行合理性檢查 if [[ -z ${NIC_NAME_bond} ]]; then NAME_bond=bond0 info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}" echo -e "----------------------------------------------\n" echo "The default first bond name is -- bond0." else while true; do echo -e "\nPlease enter a bond name[bonN]:_\b\c" read NAME_bond #檢查輸入格式是否為bond+數(shù)字的格式。 echo "${NAME_bond}" | grep -wE '^bond[[:digit:]]+$' &> /dev/null if [[ $? -eq 0 ]]; then echo "${NIC_NAME_bond}" | grep -Fw "${NAME_bond}" &> /dev/null if [[ $? -ne 0 ]]; then info_print "${NIC_NAME_bond}" echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}" echo -e "----------------------------------------------\n" break else info_print "${NIC_NAME_bond}" echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}" echo -e "----------------------------------------------\n" echo "You can not use an existing name: ${NAME_bond}" echo -e "\033[31m${NAME_bond}\033[0m is not available,Please enter another one like -- bondN." fi else info_print "${NIC_NAME_bond}" echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}" echo -e "----------------------------------------------\n" echo -e "\033[31m${NAME_bond}\033[0m is not available,Please enter another one like -- bondN." fi done fi #設(shè)置IP地址 while true; do echo -e "\nPlease enter an IP address:_\b\c" read IP_bond echo "${IP_bond}" | grep -owE '^(([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2})\.){3}([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-5]{2})$' &> /dev/null if [[ $? -eq 0 ]]; then info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}\nIP address : ${IP_bond}" echo -e "----------------------------------------------\n" break else info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}" echo -e "----------------------------------------------\n" echo -e "IP address: \033[31m${IP_bond}\033[0m format errors, please re-enter." fi done #設(shè)置netmask while true; do echo -e "\nPls enter the NETMASK[255.255.255.0]:_\b\c" read NETMASK_bond NETMASK_bond=${NETMASK_bond:="255.255.255.0"} #當(dāng)變量為NETMASK_bond為空時(shí),給其賦默認(rèn)值255.255.255.0 echo "$NETMASK_bond" | grep -owE '^(128|192|224|240|248|252|254|255)\.((0|128|192|224|240|248|252|254|255)\.){2}(0|128|192|224|240|248|252|254|255)$' &> /dev/null if [[ $? -eq 0 ]]; then info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}\nIP address : ${IP_bond}\nnetmask : ${NETMASK_bond}" echo -e "----------------------------------------------\n" break else info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}\nIP address : ${IP_bond}" echo -e "----------------------------------------------\n" echo -e "Input error.\nPlease enter the correct NETMASK or press ENTER to use 255.255.255.0.\n" fi done #:<<!zhushi! #批量注釋,如果開啟批量注釋,默認(rèn)mode=1 while true; do echo -e "\nPls enter the bonding_mode[default:mode=1,active-backup]:_\b\c" read mode_bond mode_bond=${mode_bond:="mode=1"} #當(dāng)變量為mode_bond為空時(shí),給其賦默認(rèn)值1 if [[ ! ${mode_bond} =~ "mode=[0-6]" ]]; then info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}\nIP address : ${IP_bond}\netmask : ${NETMASK_bond}" echo -e "----------------------------------------------\n" echo "Invalid answer: ${mode_bond}" echo "Eg: mode={0,1,2,3,4,5,6}" else info_print echo -e "The information you have entered:\n" echo -e "First NIC :${NIC1}\nSecond NIC :${NIC2}\nbond name :${NAME_bond}\nIP address :${IP_bond}\nnetmask :${NETMASK_bond}\nbonding_mode :${mode_bond}" echo -e "----------------------------------------------\n" break fi done #!zhushi! #選擇是否設(shè)置primary網(wǎng)卡 while true; do echo "1-${NIC1}" echo "2-${NIC2}" echo "3-none" echo -e "choose whether to set up the primary NIC or not[default:3-none]:_\b\c" read get_primary_NIC get_primary_NIC=${get_primary_NIC:="none"} case ${get_primary_NIC} in 1 ) get_primary_NIC=${NIC1} #echo "--$get_primary_NIC" break ;; 2 ) get_primary_NIC=${NIC2} #echo "--$get_primary_NIC" break ;; 3 ) get_primary_NIC=none #echo "--$get_primary_NIC" break ;; none ) break ;; * ) #echo "--$get_primary_NIC" info_print echo -e "The information you have entered:\nFirst NIC : ${NIC1}\nSecond NIC : ${NIC2}\nbond name : ${NAME_bond}\nIP address : ${IP_bond}\nnetmask : ${NETMASK_bond}" echo -e "----------------------------------------------\n" echo "Invalid answer: ${get_primary_NIC}" echo "Pls input a number in {1,2,3} or press ENTER to set up primary NIC none." continue ;; esac info_print echo -e "The information you have entered:\n" echo -e "First NIC :${NIC1}\nSecond NIC :${NIC2}\nbond name :${NAME_bond}\nIP address :${IP_bond}\nnetmask :${NETMASK_bond}\nbonding_mode :${mode_bond}\nprimary NIC :${get_primary_NIC}" echo -e "----------------------------------------------\n" break done #最終輸入信息確認(rèn) while true; do info_print echo -e "The information you have entered:\n" echo -e "\033[31mFirst NIC :${NIC1}\nSecond NIC :${NIC2}\nbond name :${NAME_bond}\nIP address :${IP_bond}\nnetmask :${NETMASK_bond}\nbonding_mode :${mode_bond}\nprimary NIC :${get_primary_NIC}\033[0m" echo -e "----------------------------------------------\n" echo -e "Pls make sure its OK[y/n]:_\b\c" read input case ${input} in [Yy]|[Yy][Ee][Ss] ) bonding "$NIC1" "$NIC2" "$NAME_bond" "$IP_bond" "$NETMASK_bond" break ;; [Nn]|[Nn][Oo] ) bonding_pre ;; * ) tput cup 7;tput ed ERROR 7 10 ;; esac done else info_print echo -e "You have \033[031m${NIC_NAME_free_nu}\033[0m network cards available:\n" #將重點(diǎn)顯示的“網(wǎng)卡名”標(biāo)示為紅色 echo -e "\033[31m${NIC_LIST[@]}\033[0m\n" echo -e "There are \033[31mnot enough\033[0m network cards to make bonding" echo -e "Pls check it......\n" echo -e 'Press ENTER to exit..._\b\c' read answer exit 1 fi } bonding(){ if [[ $# -lt 5 ]] then echo 'Bonding failed! Please provide enough information!' echo -e "\nUsage:\n sh bonding.sh <NIC1_name> <NIC2_name> <bond_name> <IP> <NETMASK>\n\n" exit 1 fi #get device name and ip information SLAVE1_DEV="$1" #SLAVE1_DEV=ethx SLAVE2_DEV="$2" #SLAVE2_DEV=ethx BOND_DEV="$3" #BOND_DEV=bondx SLAVE1=ifcfg-"$1" SLAVE2=ifcfg-"$2" BOND=ifcfg-"$3" BOND_IPADDR="$4" BOND_NETMASK="$5" BOND_DIR=/etc/sysconfig/network-scripts if [ -e $BOND_DIR/$BOND ] then echo $BOND_DIR/$BOND is already exist else #file backup Check_BakFile "${BOND_DIR}/ifcfg-*" "${BOND_DIR}/inspur_bak" "-M" #get mac address SLAVE1_MAC=`grep 'HWADDR' ${BOND_DIR}/${SLAVE1}` SLAVE2_MAC=`grep 'HWADDR' ${BOND_DIR}/${SLAVE2}` # modify $BOND touch $BOND_DIR/$BOND echo "DEVICE=${BOND_DEV}" >> $BOND_DIR/$BOND echo "BOOTPROTO=none" >> $BOND_DIR/$BOND echo "ONBOOT=yes" >> $BOND_DIR/$BOND echo "TYPE=Ethernet" >> $BOND_DIR/$BOND echo "USERCTL=no" >> $BOND_DIR/$BOND echo "IPV6INIT=no" >> $BOND_DIR/$BOND echo "PEERDNS=yes" >> $BOND_DIR/$BOND echo "IPADDR=${BOND_IPADDR}" >> $BOND_DIR/$BOND echo "NETMASK=${BOND_NETMASK}" >> $BOND_DIR/$BOND if [[ ${get_primary_NIC} == none ]]; then echo "BONDING_OPTS=\"miimon=100 ${mode_bond}\"" >> $BOND_DIR/$BOND else echo "BONDING_OPTS=\"miimon=100 ${mode_bond} primary=$(echo ${SLAVE1} | cut -d'-' -f2)\"" >> $BOND_DIR/$BOND fi # modify $SLAVE1 > $BOND_DIR/$SLAVE1 echo "DEVICE=${SLAVE1_DEV}" >> $BOND_DIR/$SLAVE1 echo 'BOOTPROTO=none' >> $BOND_DIR/$SLAVE1 #cat $BOND_DIR/../ifcfg-bak/$SLAVE1 |grep HWADDR >> $BOND_DIR/$SLAVE1 echo "#$SLAVE1_MAC" >> $BOND_DIR/$SLAVE1 echo ONBOOT=yes >> $BOND_DIR/$SLAVE1 echo TYPE=Ethernet >> $BOND_DIR/$SLAVE1 echo USERCTL=no >> $BOND_DIR/$SLAVE1 echo IPV6INIT=no >> $BOND_DIR/$SLAVE1 echo PEERDNS=yes >> $BOND_DIR/$SLAVE1 echo SLAVE=yes >> $BOND_DIR/$SLAVE1 echo MASTER=$BOND_DEV >> $BOND_DIR/$SLAVE1 # modify SLAVE2 > $BOND_DIR/$SLAVE2 echo "DEVICE=$SLAVE2_DEV" >> $BOND_DIR/$SLAVE2 echo BOOTPROTO=none >> $BOND_DIR/$SLAVE2 #cat $BOND_DIR/../ifcfg-bak/$SLAVE2 |grep HWADDR >> $BOND_DIR/$SLAVE2 echo "#$SLAVE2_MAC" >> $BOND_DIR/$SLAVE2 echo ONBOOT=yes >> $BOND_DIR/$SLAVE2 echo TYPE=Ethernet >> $BOND_DIR/$SLAVE2 echo USERCTL=no >> $BOND_DIR/$SLAVE2 echo IPV6INIT=no >> $BOND_DIR/$SLAVE2 echo PEERDNS=yes >> $BOND_DIR/$SLAVE2 echo SLAVE=yes >> $BOND_DIR/$SLAVE2 echo MASTER=$BOND_DEV >> $BOND_DIR/$SLAVE2 [[ -e /etc/modprobe.conf.bak ]] && cp /etc/modprobe.conf /etc/modprobe.conf.bak.new || cp /etc/modprobe.conf /etc/modprobe.conf.bak echo "alias $BOND_DEV bonding" >> /etc/modprobe.conf while true; do tput clear;tput cup 2 cat <<EOF ---------------------------------------------- ------ Network Configuration Assistant ------ ---------------------------------------------- Complete! File backup directory: ${BOND_DIR}/inspur_bak you can check the file and then restart the network service. 1 ) service network restart 2 ) exit ---------------------------------------------- EOF echo -e "Please make your choice:_\b\c" read answer case ${answer} in 1 ) service network restart exit 0 ;; 2 ) exit 0 ;; esac done fi } main(){ while true; do bonding_pre done }
Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。
看完上述內(nèi)容,你們掌握怎么在Linux中實(shí)現(xiàn)雙網(wǎng)卡綁定腳本的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。