【问题标题】:Get mac address for alive interface获取活动接口的mac地址
【发布时间】:2017-04-20 07:07:44
【问题描述】:

我正在尝试获取接口的mac_address,到目前为止我能够得到这个

ifconfig | grep HWaddr

eth0      Link encap:Ethernet  HWaddr 98:BE:94:24:41:62
eth1      Link encap:Ethernet  HWaddr 98:BE:94:24:41:63
eth2      Link encap:Ethernet  HWaddr 98:BE:94:24:41:64
eth3      Link encap:Ethernet  HWaddr 98:BE:94:24:41:65
usb0      Link encap:Ethernet  HWaddr 9A:BE:94:24:41:61

是否有任何一行命令可以获取已启动的接口链接的 mac_address ?

【问题讨论】:

    标签: linux networking


    【解决方案1】:

    cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address

    ip route show default | awk '/default/ {print $5}' 打印您的默认接口名称。然后你从/sys/class/net/IFACE_NAME/address得到你的mac

    【讨论】:

      【解决方案2】:

      您可以尝试以下解决方案:

      • 对于 Up 的接口,使用带有 MAC 正则表达式的 ifconfig 模式:

      ifconfig | grep -o -E '([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}'

      • 有些操作系统像 CentOS 不提供ifconfig,所以你可以像这样使用ip:

      ip add | grep link/ether | awk '{print $2}'

      • 对于所有接口,您只需:cat /sys/class/net/*/address

      【讨论】:

        【解决方案3】:

        你可以试试这个来获取你接口的mac地址。如果您检查接口名称和 MAC 地址是没有前导空格的行中的第一个和最后一个字段。

        ifconfig -a |
        awk '/^[a-z]/ { iface=$1; mac=$NF; next }
            /inet addr:/ { print iface, mac }'
        

        还是很简单的,可以用这个

        cat /sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address
        

        这实际上返回:bc:f8:6b:bd:55:00(eth0 的示例 MAC 地址)

        【讨论】:

          猜你喜欢
          • 2011-02-05
          • 2015-10-07
          • 2023-03-05
          • 1970-01-01
          • 2011-06-09
          • 2011-11-12
          • 2010-12-26
          • 2017-10-28
          • 2014-07-24
          相关资源
          最近更新 更多