#!/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