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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 多张网卡聚合成一张网络,等同于备份网卡网络
#!/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 
目录
相关文章
|
27天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
227 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
12天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
27 3
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
85 1
Linux系统之Centos7安装cockpit图形管理界面
|
17天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
24 3
|
18天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
19天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
20天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
23天前
|
运维 Prometheus 监控
自动化运维之路:从脚本到DevOps
【10月更文挑战第25天】在数字化时代的浪潮中,运维不再是简单的服务器管理,而是成为了企业竞争力的核心。本文将带你走进自动化运维的世界,探索如何通过技术手段提升效率和稳定性,以及实现快速响应市场的能力。我们将一起学习如何从基础的脚本编写进化到全面的DevOps实践,包括工具的选择、流程的优化以及文化的建设。无论你是运维新手还是资深专家,这篇文章都将为你提供有价值的见解和实用的技巧。
20 3
|
24天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
分布式计算 资源调度 Hadoop