在玩Linux虚拟机的时候,一个安装好linux系统的virtual HDD会用于创建多个虚拟机,这样就不需要在创建每个虚拟机都安装一遍系统了。virtual HDD加载到虚拟机后,新的虚拟机的MAC地址就会和virtual系统中ifcfg-eth[0-9]中的MAC地址不一样,进入系统后,ifconfig -a看到的网卡编号是接着原来系统中网卡序号编号的。假如原来系统中有四块网卡,那么对应的编号是:eth0,eth1,eth2,eth3;那么你用virtual HDD来创建一个新虚拟机,新的虚拟机同样配置了四块网卡,那么在进入系统后,用ifconfig -a 应该看到以下这样的网卡编号:eth4,eth5,eth6,eth7。

我经常会遇到这样的问题,每次修复这类问题,都要花上很长时间,实在纠结。我不得不考虑自动化的问题。于是下面的这个脚本程序就诞生了。

这个脚本程序主要修改以下两个文件:

ifcfg-eth[0-9]:[0-9]是泛指,这是正则表达式的表示方法,别说看不懂。这些网卡配置文件中的MAC地址全部要修改为当前机器上网卡的MAC。

70-persistent-net.rules:决定网卡的编号。这个文件中的内容,是系统启动时检测到的网卡,是系统自动生成;这个文件可以直接清空,我这里为了练手,所以我也对其做了细化处理。

执行完这个脚本后,重启系统,就一切OK了。就看到了熟悉的eth0,eth1……之类的了。

此脚本程序适应于RHEL系列,CentOS。

#!/bin/bash

#update:2012-12-16

#author:Sean_Gong

#version

#根据系统所识别到的网卡个数,决定修改ifcfg-eth$x文件,在修改这个网卡配置文件之前首先确定这个文件是否存在。

#如果存在,则把系统识别到的所有网卡的MAC地址写入该文件作为注释,便于记录和检查。

#在处理70-persistent-net.rules时,可以简单的把该文件清空。

#系统重启后,会自己把识别到的网卡添加到这个文件中,不需要人工干预。

#这里我之所以处理这个文件,是为了练习sed对文本的处理,和程序逻辑的锻炼,对程序整体的掌控能力。

cdate=$(date '+%Y%m%d')

num=$(ifconfig -a | grep eth | wc -l)

for ((n=0;n

do

j=$((n+1))

[ -e 70-persistent-net.rules_${cdate} ] || cp -fa /etc/udev/rules.d/70-persistent-net.rules 70-persistent-net.rules_${cdate}

if [ -e /etc/sysconfig/network-scripts/ifcfg-eth${n} ] ; then

[ -e ifcfg-eth${n}_${cdate} ] || cp -fa /etc/sysconfig/network-scripts/ifcfg-eth${n} ./ifcfg-eth${n}_${cdate}

cat ifcfg-eth${n}_${cdate} | sed '/^#eth.*$/d' > ifcfg-eth${n}_temp

ifconfig -a | grep "HWaddr" | awk '{print "#"$1" : "$5}' >> ifcfg-eth${n}_temp

newmac=$(ifconfig -a | grep "eth" | sort | awk '{print $5}' | nl -n ln | grep "^${j}" | awk '{print $2}')

sed "s/HWADDR.*$/HWADDR=$newmac/g" ifcfg-eth${n}_temp > ifcfg-eth${n}_vi

cp -fa ifcfg-eth${n}_vi /etc/sysconfig/network-scripts/ifcfg-eth${n} && rm -f ifcfg-eth${n}_temp

grep -i ${newmac} 70-persistent-net.rules_${cdate} | sed "s/NAME=.*$/NAME=\"eth${n}\"/g" >> 70-persistent-net.rules_temp

else

newmac=$(ifconfig -a | grep "eth" | sort | awk '{print $5}' | nl -n ln | grep "^${j}" | awk '{print $2}')

grep -i ${newmac} 70-persistent-net.rules_${cdate} | sed "s/NAME=.*$/NAME=\"eth${n}\"/g" >> 70-persistent-net.rules_temp

continue

fi

done

cat 70-persistent-net.rules_temp > 70-persistent-net.rules_vi && rm -f 70-persistent-net.rules_temp

cp -fa 70-persistent-net.rules_vi /etc/udev/rules.d/70-persistent-net.rules

linux 网卡 mac 配置文件,Linux脚本程序自动修改网卡配置文件中的MAC地址相关推荐

  1. linux脚本怎么把文件地址变成动态地址,Linux脚本程序自动修改网卡配置文件中的MAC地址...

    在玩Linux虚拟机的时候,一个安装好linux系统的virtual HDD会用于创建多个虚拟机,这样就不需要在创建每个虚拟机都安装一遍系统了.virtual HDD加载到虚拟机后,新的虚拟机的MAC ...

  2. linux脚本自动修改网卡,Linux脚本程序自动修改网卡配置文件中的MAC地址

    在玩Linux虚拟机的时候,一个安装好linux系统的virtual HDD会用于创建多个虚拟机,这样就不需要在创建每个虚拟机都安装一遍系统了.virtual HDD加载到虚拟机后,新的虚拟机的MAC ...

  3. linux网卡的配置文件是双引号,Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址...

    修改网卡ens33为eth0 在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯.现更改回旧名称eth0看着顺眼. 1.备份/etc/sysconfig/grub文件 cp /etc ...

  4. Linux 开机自启动多个脚本程序

    本篇文章讲解Linux 开机自启动程序   Linux开机自启动在项目中应用很常见,突然停电或者故障,程序总归要关掉的,如果手动去启动程序,比较麻烦,所以开机自启动是非常重要的一环.   在Debia ...

  5. linux执行db2的sql脚本,LinuxShell自动执行当前目录所有DB2 SQL语句

    该shell脚本用于自动执行当前目录下所有的SQL语句,分为以下几个步骤: 步骤1.删除当前目录下已存在的log日志文件 #删除当前目录下log日志文件 for test1 in `ls` do re ...

  6. Linux网卡改为动态过去IP,Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址...

    修改网卡ens33为eth0 在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯.现更改回旧名称eth0看着顺眼. 1.备份/etc/sysconfig/grub文件 cp /etc ...

  7. linux怎么修改ens33文件,Linux修改网卡ens33为eth0以及centos7下修改动态IP为静态IP地址...

    修改网卡ens33为eth0 在使用RHEL和Centos7,发现网卡名称变成了EnoX,挺不习惯.现更改回旧名称eth0看着顺眼. 1.备份/etc/sysconfig/grub文件 cp /etc ...

  8. mac svn工具_程序员或产品经理,这些Mac的效率工具一定不要错过

    工欲善其事必先利其器!用好工具能很大的提高我们的工作效率,尤其是程序员和产品经理等.今天给大家介绍一些好用的工具 随时记下闪现的灵感 人的一天中大脑会产生大约6万个想法, 其中有不少优秀的 idea. ...

  9. 微信小程序怎么修改自定义组件中的样式

    在微信小程序中我们经常要用到自定义组件,但是有时我们因为引用的地方不同可能组件的一些样式也要修改,比如颜色,高度,宽度等来适合不同的页面,有没有办法来修改自定义组件中的样式呢,很显然是有的,我们要用到 ...

  10. linux 执行sh_linux下执行脚本 sh -x XXX.sh 调试中存在大量/r 的问题

    今天调试一个脚本,每句结尾都有大量/r 换行字符.检验了很多次都没调试成功. 后来才发现这个脚本是在windows环境下编写的,直接ftp拖到了linux服务器上. vi下用 :set ff 查看文件 ...

最新文章

  1. engine中调整Element的上下显示顺序(遮盖)
  2. 编程作业—C++初探 简单的学生信息处理程序实现
  3. Django 权限管理-后台根据用户权限动态生成菜单
  4. C++ 对二维数组排序 升序 降序
  5. Innodb隔离级别的实现原理
  6. 算法训练营 重编码_编码训练营适合您吗?
  7. python使用ssh 中文_Python3制作简易SSH登录工具
  8. 【LogStash】LogStash 配置后无法启动的问题
  9. 知方可补不足~CSS中margin,padding,border-style有几种书写规范
  10. Codevs 1205 单词反转(Vector以及如何输出string)
  11. Java 素数筛选法
  12. B站网站后台工程源码泄露 用户信息还安全吗?
  13. 达内培训视频下载python
  14. Java项目:大学生实习管理系统(java+SpringBoot+Thymeleaf+html+JQuery+bootstrap)
  15. C#——NPOI对Excel的操作、导入导出时异常处理(二)
  16. 985高校90后博导,7篇一作论文他引过百!想培养更多的“雷军”
  17. Method类的使用
  18. C 语言 某人在国外留学,不熟悉当地的天气预报中的华氏温度值,请编程按每隔10°输出0°到300°之间的华氏温度的对照表,方便他对照查找
  19. java学习之服务器第26天( --form表单-- 四大域对象--cookie)
  20. 集体所有制的企业是属于国企吗

热门文章

  1. linux如何打出罗马数字,ps罗马数字怎么打
  2. android ios相机,曝苹果iOS13相机加入了这项功能 安卓上早就有了
  3. 她力量系列四丨读博6年两次换导师,靠一点点“倔”,俞舟成为social chatbot的开拓者之一
  4. 字符串按照ASCII排序
  5. swing打地鼠游戏_幼儿园里的室内徒手游戏(二)
  6. 经济类图书推荐--转自水木
  7. 网易云登陆界面怎么用PHP做,网易云音乐登录流程图
  8. 网站被攻击了,怎么办?
  9. 本地Blast2GO安装
  10. 简析市场营销中的六大数据科学用例