linux centos 网卡聚合脚本-自动化运维

简介: 多张网卡聚合成一张网络,等同于备份网卡网络
#!/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 
目录
相关文章
|
12天前
|
存储 人工智能 运维
别再靠脚本“救火”了!让智能数据治理接管你的运维世界
别再靠脚本“救火”了!让智能数据治理接管你的运维世界
115 12
|
3月前
|
机器学习/深度学习 消息中间件 人工智能
别只会写脚本了!看看机器学习是怎么帮运维“摸鱼”的
别只会写脚本了!看看机器学习是怎么帮运维“摸鱼”的
90 13
|
6月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
540 25
|
4月前
|
Oracle 关系型数据库 Linux
MyEMS开源系统安装之CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
本指南介绍如何在CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux服务器上部署MyEMS开源能源管理系统。内容涵盖系统准备、数据库配置、多个MyEMS服务(如myems-api、myems-admin、myems-modbus-tcp等)的安装与配置,以及Nginx服务器设置和防火墙规则调整。通过完成所有步骤,您将能够访问MyEMS Admin UI和Web UI,默认端口分别为8001和80,初始登录凭据已提供。
209 0
|
7月前
|
存储 IDE Linux
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
742 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
|
6月前
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
250 10
|
2月前
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
649 69
|
1月前
|
存储 分布式计算 Linux
安装篇--CentOS 7 虚拟机安装
VMware 装 CentOS 7 不知道从哪下手?这篇超详细图文教程手把手教你在 VMware Workstation 中完成 CentOS 7 桌面系统的完整安装流程。从 ISO 镜像下载、虚拟机配置,到安装图形界面、设置用户密码,每一步都有截图讲解,适合零基础新手快速上手。装好之后无论你是要搭 Hadoop 集群,还是练 Linux ,这个环境都够你折腾一整天!
716 2
|
2月前
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
301 78
|
1月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
362 16