#!/bin/bash
#======用戶填寫信息網卡聚合後的IP信息
gatewayset=192.168.171.0 # 請先修改子網何DNS
netmask=255.255.255.0 # 子網掩碼
a=( # 請將IP地址放置括號內,分隔符是換行或者空格
192.168.171.129
192.168.171.130
192.168.171.131
)
dnsset=8.8.8.8
dnsset1=114.114.114.114
# IP寫入
sed -i 's/^SELINUX.*/SELINUX=Disabled/g' /etc/sysconfig/selinux
# 匹配 ^ 開頭字符為SELINUX和該行後面的所有字符
# 更改為 SELINUX=Disabled,後面是文件路徑
# 關閉 selinux
getenforce # 查看狀態:顯示參數為disabled則為成功關閉
########################## 查找原始網卡路徑 ##############################
eth=`ip a| grep "BROADCAST" | awk -F ":" 'NR==2{print $2}' | sed "s/ //g"` ; echo "網卡名為:"$eth ;
echo "如果網卡名稱不正確,修改 eth 變量中的NR==2 是列出所有網卡選擇第二張,"
sleep 5
# 命令 ip a 查看網卡 過濾;broadcast [ˈbrɔːdkɑːst] >廣播;字段的行
# awk -F ":" 以冒號為分隔符 ; 選擇第一行,第二列,sed刪除空格
# 符號 ; 分號表示第一條命令結束,第二條開始
ethCatalog=$(find / -name "*$eth" | grep "/etc/" | sed "s/ //g" ) ; echo "網卡路徑為: " $ethCatalog
# catalog [ˈkætəlɔg] 目錄
# find 查找網卡名稱的路徑,grep 過濾/etc 目錄下網卡名稱。sed刪除空格
ip=$(cat $ethCatalog | grep IPADDR | awk -F "=" 'NR==1{print $2}' | sed "s/ //g") ; echo "IP地址為: " $ip
# 查看網卡文件,過濾IPADDR的行,awk -F"=" 分隔符是冒號,打印第一行第二列
echo "使用變量‘$ip’傳來的網卡名,再使用find 查看命令,'*$ip' 星號是網卡名前面還有字符模糊匹配。網卡路徑為:$ifcfg"
# 我要在/etc 目錄裡,查找網卡名開頭字符為ifcfg的網卡名字和路徑:
# find /etc -name ifcfg* # -name指定名字,符號 * 後面所有內容
########################## 網卡恢復初始化 ##############################
sed -i 's/BOOTPROTO.*/BOOTPROTO=dhcp/g' $ethCatalog
sed -i 's/^ONBOOT.*/ONBOOT=no/g' $ethCatalog
# -e 修改多個 .* 後面的所有內容 \ 多行換行
# 設置為static靜態
# 開啟 onboot=yes
# 最後跟上文件路徑
echo "==========沒有需改的網卡信息為============"
cat $ethCatalog
sed -i "/IPADDR/d" $ethCatalog
sed -i "/NETMASK/d" $ethCatalog
sed -i "/GATEWAY/d" $ethCatalog
sed -i "/DNS/d" $ethCatalog
sed -i "/PREFIX/d" $ethCatalog
echo "網卡恢復初始化完成,查看網卡配置信息 "
cat $ethCatalog
#########################################################################
echo "網卡正在聚合,請稍等 "
sleep 3
nmcli connection add type bond ifname eth0 mode 1 ;
nmcli connection add type bond-slave ifname eno1 master eth0 ;
nmcli connection add type bond-slave ifname eno2 master eth0 ;
nmcli connection add type bond ifname eth1 mode 1
nmcli connection add type bond-slave ifname eno3 master eth1 ;
nmcli connection add type bond-slave ifname eno4 master eth1 ;
echo "網卡聚合完成正在,配置網卡信息 "
jhetc=`find /etc -name "*eth0"`
echo "聚合後的網卡路徑為:$jhetc "
#########################################################################
sed -i 's/BOOTPROTO.*/BOOTPROTO=static/g' $jhetc
sed -i 's/^ONBOOT.*/ONBOOT=yes/g' $jhetc
# -e 修改多個 .* 後面的所有內容 \ 多行換行
# 設置為static靜態
# 開啟 onboot=yes
# 最後跟上文件路徑
echo "==========沒有需改的網卡信息為============"
cat $ethCatalog
sed -i "/IPADDR/d" $jhetc
sed -i "/NETMASK/d" $jhetc
sed -i "/GATEWAY/d" $jhetc
sed -i "/DNS/d" $jhetc
sed -i "/PREFIX/d" $jhetc
IPADDR=$(grep -r IPADDR1 $jhetc| awk -F = '{print $0}');
ags=${#a[*]}
echo "數組有效元素為:$ags"
ipgs=$ags # 限制循環打印次數:數組個數為循環次數
for ((i=0;i<=$ipgs;i++))
do
echo "IPADDR""$i"=${a[$i]} >> $jhetc # $i 是換行自加加循環,也用來指定數組角標對應的值
done
echo "GATEWAY="$gatewayset >> $jhetc # 只有一個網關和DNS,不能為1,否則無法連接
echo "DNS="$dnsset >> $jhetc
echo "DNS1="$dnsset1 >> $jhetc
#=====netmask
qa=1 # 定義qa變量值為1
while(( $qa<=$ipgs )) # while [wʌɪl] 同時,對變量進行約束定義
do # do 行動
echo "NETMASK"$qa"=$netmask" >> $jhetc # 打印變量
let "qa++" # 定義變量的規則
done
echo "會自動刪除多餘信息,請等待。。。"
sed -i '/^$/d' $jhetc # '/^$/d' 刪除 d ; 開頭和後面所有為空 ^$
sed -i 's/IPADDR0/IPADDR/g' $jhetc
sed -i 's/NETMASK0/NETMASK/g' $jhetc # 將名稱為0 的網卡去掉0
# 文件路徑
sed -i "/"IPADDR$ipgs"/d" $jhetc
sed -i "/"NETMASK$ipgs"/d" $jhetc # 刪除多餘信息
echo "==========修改後的網卡信息為============"
cat $jhetc
echo "網卡路徑:" $jhetc
ip a
/etc/init.d/network restart ; ip a ; ping -c10 -w10 eisc.cn
# 重啟 ,查看ip , ping -c 10 次數C 10次,-w 單次ping等待時間秒
# 腳本方式執行 yum install wget ; wget eisc.cn/file/shell/centos-Polymerization.sh ; chmod 755 centos-Polymerization.sh ; source centos-Polymerization.sh