linux如何获取mac地址
linux如何获取mac地址详细介绍
在 Linux 系统中,获取 MAC 地址(网卡物理地址)的方法有多种,以下是常用的几种方式:
方法 1:使用 ip 命令(推荐,现代 Linux 通用)
ip 是新一代网络配置工具,功能强大且无需额外安装(系统默认自带)。
命令格式:
bash
show 接口名称
示例:
- 查看所有接口的 MAC 地址:
bashshow输出中
ether后面的字符串即为 MAC 地址,例如:
plaintext2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000link/ether **00:1a:2b:3c:4d:5e** brd ff:ff:ff:ff:ff:ff
- 查看指定接口(如
eth0或enp0s3)的 MAC 地址:
bashshow dev eth0show dev eth0 ether
方法 2:使用 ifconfig 命令(经典工具,需安装 net-tools 包)
ifconfig 是传统网络工具,部分新系统(如 Ubuntu 20.04+)可能未默认安装,需手动安装。
安装命令(以 Debian/Ubuntu 为例):
bash
net-tools
使用方法:
- 查看所有接口的 MAC 地址:
bash输出中
HWaddr或ether后面的字符串即为 MAC 地址,例如:
plaintextenp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ether **00:1a:2b:3c:4d:5e** txqueuelen 1000 (Ethernet)
- 查看指定接口(如
eth0)的 MAC 地址:
basheth0
方法 3:通过系统文件直接读取(适用于所有 Linux)
Linux 将网卡信息存储在 /sys/class/net/ 目录下,可直接读取 address 文件。
命令格式:
bash
/sys/class/net/接口名称/address
示例:
- 先查看所有接口名称(确定目标接口,如
enp3s0):bash/sys/class/net/ - 读取指定接口的 MAC 地址:bash
/sys/class/net/enp3s0/address
方法 4:使用 nmcli 命令(适用于 NetworkManager 管理的系统)
若系统使用 NetworkManager(如桌面版 Linux),可通过 nmcli 查看。
命令格式:
bash
nmcli dev show 接口名称
示例:
- 查看所有设备的详细信息(包含 MAC 地址):
bashnmcli dev show输出中
GENERAL.HWADDR即为 MAC 地址。 - 查看指定接口(如
enp3s0)的 MAC 地址:
bashnmcli dev show dev enp3s0
注意事项
- 接口名称:
现代 Linux 的接口名称通常为enpXsY(有线)或wlpXsY(无线),而非传统的eth0/wlan0,可通过ip link或ls /sys/class/net/确认实际名称。 - 权限:
上述命令均无需管理员权限(sudo),普通用户即可读取 MAC 地址(公开信息)。 - 过滤输出:
若只需提取 MAC 地址,可结合grep和awk简化输出,例如:
bashshow dev enp3s0912ip link show dev enp3s0 |
根据需求选择合适的方法即可,推荐优先使用 ip link 或系统文件读取方式,兼容性和通用性最佳。