加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux 按mac排序分配网卡名称

发布时间:2020-12-14 01:50:45 所属栏目:Linux 来源:网络整理
导读:需求:设备有6个千电口,2个万兆光口。 需要按类型和接口顺序排列后为它们分配网卡名称(请注意不是mac顺序,而是busid号)。 例如: 00-10-f3-ff-ff-80-d1-35? --eth0 00-10-f3-ff-ff-80-d1-36? --eth1 00-10-f3-ff-ff-80-d1-37? --eth2 00-10-f3-ff-ff-80-

需求:设备有6个千电口,2个万兆光口。 需要按类型和接口顺序排列后为它们分配网卡名称(请注意不是mac顺序,而是busid号)。

    例如:

      00-10-f3-ff-ff-80-d1-35? --eth0
      00-10-f3-ff-ff-80-d1-36? --eth1
      00-10-f3-ff-ff-80-d1-37? --eth2
      00-10-f3-ff-ff-80-d1-38? --eth3
      00-10-f3-ff-ff-80-d1-39? --eth4
      00-10-f3-ff-ff-80-d1-3a? --eth5

      00-10-f3-ff-ff-77-2b-97? --fb10
      00-10-f3-ff-ff-77-2b-97? --fb11

linux版本:centos6.2 32位

?

起初我是想通过python3的 psutil?模块 可以获得mac地址,然后将mac地址转换成十进制进行排序后对?/etc/udev/rules.d/70-persistent-net.rules 文件修改来实现。也考虑过mac地址不能代表io顺序的问题,最后发现linux命令lspci可以获取对应关系从而放弃这个思路。

#-*-coding:utf8-*-

macs=[]
interface={}

from psutil import net_if_addrs
for k,v in net_if_addrs().items():
    for item in v:
        address = item[1]
        if ":" in address and len(address) == 17:
            idkey = address.replace(‘:‘,‘‘)
            interface.update({address:(int(address.replace(‘:‘,‘‘),16))})
        elif "-" in address and len(address) == 17:
            idkey = address.replace(‘-‘,‘‘)
            interface.update({address:(int(address.replace(‘-‘,16))})


for k in sorted(interface,key=interface.__getitem__):
    print(k,interface[k])

  

lspci -D -n -v |egrep "0200|Device Serial Number"

这里是两个过滤条件,0200代表网卡,包含Device Serial Number行会显示mac地址 。
我的想法是通过busid顺序修改 “/etc/udev/rules.d/70-persistent-net.rules”文件的命名顺序

[[email?protected] ~]# lspci -D -n -v |egrep "0200|Number"
0000:02:00.0 0200: 8086:150c
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-80-d1-35
0000:03:00.0 0200: 8086:150c
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-80-d1-36
0000:04:00.0 0200: 8086:150c
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-80-d1-37
0000:05:00.0 0200: 8086:150c
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-80-d1-38
0000:06:00.0 0200: 8086:150c
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-80-d1-39
0000:07:00.0 0200: 8086:150c
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-80-d1-3a
0000:09:00.0 0200: 8086:10fb (rev 01)
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-77-2b-97
0000:09:00.1 0200: 8086:10fb (rev 01)
        Capabilities: [140] Device Serial Number 00-10-f3-ff-ff-77-2b-97

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读