用 shell 脚本修改网卡配置信息批量写入IP地址

简介: 使用数组和for循环将IP地址进行批量修改
#!/bin/bash
#======用户填写信息网卡聚合后的IP信息
gatewayset=1.1.1.1
netmask=255.255.255.0                   # 子网掩码
a=(                             # 请将IP地址放置括号内,分隔符是换行或者空格
1.1.1.1
)
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则为成功关闭
########################## 查找原始网卡路径 ##############################
listeth=`ip a| grep "BROADCAST" | awk -F ":" '{print $2}' | sed "s/ //g"` ; echo "网卡名为:"$eth ;
 echo "如果网卡名称不正确,修改 eth 变量中的NR==2 是列出所有网卡选择第二张,"   
 
 # 命令 ip a 查看网卡 过滤;broadcast  [ˈbrɔːdkɑːst] >广播;字段的行
                                                                                 # awk -F ":" 以冒号为分隔符 ; 选择第一行,第二列,sed删除空格
                                        # 符号  ; 分号表示第一条命令结束,第二条开始

szeth=(
$listeth
)
echo "查看网卡数组变量: ${szeth[*]} 
总数为:${#szeth[*]}
" 

for((i=0;i<${#szeth[*]};i++))
do
echo "网卡名: ${szeth[$i]}  对应编号:$i   

速率为: `ethtool ${szeth[$i]} | grep Speed  `
------------------------------------------"
done


echo "网卡速率为100M的是外网卡,并输入数字编号进行选择配置外网卡!" 

read -p "请输入 数字编号:" rp
echo "您选择的 网卡为: ${szeth[$rp]}"


eth=${szeth[$rp]}
echo "此时将对网卡  $eth  进行批量覆盖式修改"
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指定名字,符号 * 后面所有内容
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
sed -i  's/BOOTPROTO.*/BOOTPROTO=static/g'  $ethCatalog
sed -i  's/^ONBOOT.*/ONBOOT=yes/g' $ethCatalog
                                                        #  -e 修改多个  .* 后面的所有内容    \ 多行换行
                                                        # 设置为static静态
                                                        # 开启 onboot=yes
                                                        # 最后跟上文件路径
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]} >> $ethCatalog                               # $i 是换行自加加循环,也用来指定数组角标对应的值
done
echo "GATEWAY="$gatewayset >> $ethCatalog                                       # 只有一个网关和DNS,不能为1,否则无法连接
echo "DNS="$dnsset >> $ethCatalog
echo "DNS1="$dnsset1 >> $ethCatalog
#=====netmask
qa=1                                                                                    # 定义qa变量值为1
while(( $qa<=$ipgs ))                                           # while  [wʌɪl] 同时,对变量进行约束定义
do                                                              # do 行动
        echo "NETMASK"$qa"=$netmask" >> $ethCatalog                 # 打印变量
        let "qa++"                                                                      # 定义变量的规则
done
echo "会自动删除多余信息,请等待。。。"
sed -i '/^$/d' $ethCatalog                                          # '/^$/d' 删除 d ;   开头和后面所有为空 ^$ 
sed -i 's/IPADDR0/IPADDR/g' $ethCatalog
sed -i 's/NETMASK0/NETMASK/g' $ethCatalog                                   # 将名称为0 的网卡去掉0
                                                                                                                # 文件路径
sed -i "/"IPADDR$ipgs"/d" $ethCatalog
sed -i "/"NETMASK$ipgs"/d"  $ethCatalog                                             # 删除多余信息
echo "==========修改后的网卡信息为============" 
cat $ethCatalog
echo "网卡路径:" $ethCatalog
ip a
/etc/init.d/network restart ; ip a ; ping -c10 -w10  eisc.cn
                                                                                                # 重启 ,查看ip , ping -c 10 次数C  10次,-w 单次ping等待时间秒
目录
相关文章
|
7月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
645 2
|
7月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
626 9
|
7月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
9月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
1074 1
|
10月前
|
Shell
Shell脚本循环控制:shift、continue、break、exit指令
使用这些命令可以让你的Shell脚本像有生命一样动起来。正确使用它们,你的脚本就能像一场精心编排的舞蹈剧目,既有旋律的起伏,也有节奏的跳跃,最终以一场惊艳的表演结束。每一个动作、每一个转折点,都准确、优雅地完成所需要表达的逻辑。如此,你的脚本不只是冰冷的代码,它透过终端的界面,跳着有节奏的舞蹈,走进观众——使用者的心中。
354 60
|
11月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
476 17
|
11月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
576 3
|
11月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
321 4
|
12月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
1580 25
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。