免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4276 | 回复: 9

[文本处理] centos 截取MAC地址 [复制链接]

论坛徽章:
0
发表于 2014-07-22 13:48 |显示全部楼层
本帖最后由 q313768669 于 2014-07-23 14:05 编辑

做了一个centos的克隆盘,可以拷贝到其他硬盘上使用,但是遇到MAC地址和硬件的MAC不一致的问题。每次都需要生成新的70-persistent-net.rules ,并且手动修改ifcfg-eth0的HDADDR。

想写一个脚本解决这个问题,在开机之后新生成的70-persistent-net.rules中把MAC取出来,然后替换到ifcfg-eth0的HDADDR字段。管道控制这一部分不太熟悉,请熟悉这块的朋友帮忙想个办法实现以下。谢谢。

另外,如果有其他更方便的方法可以自动把MAC地址弄成和硬件匹配的,也希望不吝赐教。谢谢。


以下是 /etc/udev/rules.d/70-persistent-net.rules 这个文件,我想把 00:0c:29:4e:f8:09 这段取出来:
       
  1 # This file was automatically generated by the /lib/udev/write_net_rules
  2 # program, run by the persistent-net-generator.rules rules file.
  3 #
  4 # You can modify it, as long as you keep each rule on a single
  5 # line, and change only the value of the NAME= key.
  6
  7 # PCI device 0x1022:0x2000 (pcnet32)
  8 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:4e:f8:09", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"



谢谢大家。
问题解决了。用了3楼的语句。根据实际情况改了个参数,如下:
HWADDR=$(awk -F\" '/eth0/{print $8}'    /etc/udev/rules.d/70-persistent-net.rules)

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2014-07-22 14:01 |显示全部楼层
  1. sed '/ATTR{address}/!d;s/.*ATTR{address}=="\([^"]\+\)".*/\1/' /etc/udev/rules.d/70-persistent-net.rules
复制代码

论坛徽章:
1
双鱼座
日期:2014-08-25 19:13:11
发表于 2014-07-22 14:01 |显示全部楼层
awk -F\" '/address/{print $8}'    /etc/udev/rules.d/70-persistent-net.rules

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
发表于 2014-07-22 14:05 |显示全部楼层
回复 1# q313768669
  1. awk -F\"  '/ATTR{address}/{print "sed -i /HDADDR/s/.*/HDADDR="$8"/ /etc/sysconfig/network-scripts/ifcfg-eth0"}'
  2. /etc/udev/rules.d/70-persistent-net.rules |sh
复制代码

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2014-07-22 14:08 |显示全部楼层
  1. grep -o "\b..:..:..:..:..:..\b" /etc/udev/rules.d/70-persistent-net.rules
复制代码

论坛徽章:
10
金牛座
日期:2014-09-16 19:02:48技术图书徽章
日期:2015-11-24 01:37:29操作系统版块每日发帖之星
日期:2015-11-18 06:20:002015年亚洲杯之沙特阿拉伯
日期:2015-04-13 17:33:462015年迎新春徽章
日期:2015-03-04 09:51:162015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2014-12-04 19:33:55白羊座
日期:2014-09-17 19:34:42巨蟹座
日期:2014-09-16 21:09:4815-16赛季CBA联赛之同曦
日期:2016-06-27 23:23:07
发表于 2014-07-22 14:33 |显示全部楼层
本帖最后由 qq58945591 于 2014-07-22 15:09 编辑

#!/bin/bash
#get mac
m=$(grep -Po "([a-z0-9]{2}\:)+.." /etc/udev/rules.d/70-persistent-net.rules)

#replace mac
sed -i "s/^HWADD.*/HWADDR=$m/g" /etc/sysconfig/network-scripts/ifcfg-eth0











菜鸟的笨办法,写两行做个脚本。试试看。我的是centos 7,   没有那个70-persistent-net.rules

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-07-22 14:41 |显示全部楼层
  1. grep -oP '(?<={address}==")[^"]+'
复制代码

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
发表于 2014-07-22 14:44 |显示全部楼层
如果是vmware,好像它会告警然后自动产生新的mac,LZ用的什么?

论坛徽章:
0
发表于 2014-07-22 15:08 |显示全部楼层
回复 4# HH106


    学习了,把sed作为awk输出来执行

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
发表于 2014-07-22 15:44 |显示全部楼层
不用这么麻烦, 直接把 ifcfg-eth0 里的 HWADDR 这条删掉就好了.

这个配置不是必须的, 是可选的. 一般是为了保证物理网卡和配置的对应关系, 防止新插进来的网卡影响网止发现的顺序.
对于虚拟机来说, 一般不会发生这种情况的, 所以, 可以不加这个配置.

顺便说一句, 在 RHEL7 的默认配置里, 网卡的名字不会冲突了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP