在CentOS系统中,网卡的UUID(Universally Unique Identifier)是网络接口的唯一标识符,常用于配置文件、网络脚本或自动化管理中,获取网卡的UUID可以通过多种方式实现,以下将介绍几种常用方法及其适用场景。

使用ip命令获取网卡UUID
现代Linux系统推荐使用ip命令,它是net-tools工具包的替代品,功能更强大且输出更规范,通过以下命令可以快速获取所有网卡的UUID:
ip -j link show
该命令会以JSON格式输出网络接口的详细信息,包括UUID,在输出中找到"ifname": "eth0"对应的"link_uuid"字段即可获取目标网卡的UUID,若需单独查看某个网卡的信息,可指定接口名称,如ip -j link show eth0。
通过udev规则获取网卡UUID
udev是Linux设备管理器,它为每个设备生成唯一属性,网卡UUID通常存储在/sys/class/net/目录下,以eth0为例,其UUID可通过以下路径获取:
cat /sys/class/net/eth0/uuid
如果路径不存在,说明该网卡未分配UUID,可能需要手动配置或检查驱动是否正常加载。
查询NetworkManager配置文件
在CentOS 7及以上版本,NetworkManager是默认的网络管理服务,网卡的UUID通常存储在/etc/sysconfig/network-scripts/目录下的配置文件中,文件名格式为ifcfg-<interface-name>,查看eth0的配置文件:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
在文件中找到UUID字段即可获取网卡的唯一标识符,如果未配置,可通过nmcli命令工具重新生成或添加UUID。

使用nmcli命令行工具
nmcli是NetworkManager的命令行接口,支持查看和管理网络接口及其属性,执行以下命令可列出所有网卡的UUID:
nmcli connection show
输出结果中包含UUID列,直接对应每个网络连接的标识符,若需查看特定网卡的详细信息,可添加| grep <interface-name>过滤结果。
通过ethtool获取硬件信息
若需关联网卡的硬件地址(MAC)与UUID,可结合ethtool和udev信息。
ethtool -P eth0
该命令会显示网卡的永久MAC地址,结合/sys/class/net/eth0/address可进一步确认设备唯一性,但UUID通常由系统动态生成,需通过前述方法直接获取。
手动配置网卡UUID
在特殊场景下,可能需要手动修改UUID,编辑ifcfg文件并添加或修改UUID字段,确保其符合RFC 4122标准。
UUID=550e8400-e29b-41d4-a716-446655440000
修改后需重启网络服务或重新加载配置使生效:

nmcli connection down eth0 && nmcli connection up eth0
自动化脚本中的UUID获取
在Shell脚本中,可通过以下方式动态获取UUID并用于后续操作:
UUID=$(nmcli -g UUID connection show eth0) echo "网卡eth0的UUID是: $UUID"
这种方法适用于自动化部署或批量管理网络配置的场景。
相关FAQs
Q1: 为什么某些网卡的UUID为空或不存在?
A1: UUID的生成依赖于系统或NetworkManager的配置,如果网卡是通过传统ifcfg文件手动配置且未指定UUID,则可能为空,建议使用nmcli con add type ethernet ifname eth0命令自动生成包含UUID的连接配置。
Q2: 如何修改已存在的网卡UUID?
A2: 直接编辑对应的ifcfg文件,修改或添加UUID字段,然后执行nmcli connection reload和nmcli connection up <interface>使更改生效,注意避免重复使用UUID,以防冲突。