5154

Good Luck To You!

CentOS如何正确读取指定网卡的UUID?

在CentOS等现代Linux发行版中,网络管理已经从传统的脚本化配置逐步转向了以NetworkManager为核心的动态管理模式,在这一体系下,为每个网络连接配置分配一个独一无二的通用唯一标识符(UUID)变得至关重要,UUID确保了即使在物理设备(如网卡)名称发生变化,或者系统中存在多个相似的配置时,系统依然能够准确无误地应用指定的网络策略,掌握如何读取网卡的UUID,是进行网络故障排查、脚本自动化和高级配置的基础技能。

CentOS如何正确读取指定网卡的UUID?

使用 nmcli 命令行工具

nmcli(NetworkManager Command-Line Interface)是与NetworkManager交互的首选工具,它功能强大且易于使用,无论是用于即时查询还是编写脚本都非常方便。

要列出系统中所有网络连接的配置及其对应的UUID,可以直接在终端中执行以下命令:

nmcli connection show

或者使用其简写形式:

nmcli con show

执行后,你会看到一个类似下面的表格输出:

NAME                UUID                                  TYPE      DEVICE
有线连接 1          5a062d3a-6d2a-4f8e-b8c1-1e3b9c8d7a6f  ethernet  ens33
Wired connection 2  b1c2d3e4-f5a6-b7c8-d9e0-f1a2b3c4d5e6  ethernet  -- 

在这个输出中,NAME列是网络配置的名称,UUID列就是我们需要的唯一标识符,TYPE列是连接类型(如ethernet),而DEVICE列则显示该配置当前激活的物理设备,如果一个配置未被激活,其DEVICE列会显示为。

如果你只想获取特定连接的UUID,可以使用-f参数来指定需要显示的字段,从而过滤掉无关信息:

nmcli -f connection.uuid connection show "有线连接 1"

输出将非常简洁:

CentOS如何正确读取指定网卡的UUID?

connection.uuid: 5a062d3a-6d2a-4f8e-b8c1-1e3b9c8d7a6f

直接查看网络配置文件

对于习惯直接与文件系统打交道的用户来说,检查网络配置文件是最直接、最可靠的方法,在CentOS 7及之后的版本中,NetworkManager将网络配置文件存储在/etc/sysconfig/network-scripts/目录下,每个网络连接的配置文件通常以ifcfg-开头,后面跟着连接名称或设备名称。

要查看名为ens33的网卡配置,可以打开对应的文件:

cat /etc/sysconfig/network-scripts/ifcfg-ens33

可能如下所示:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=有线连接 1
UUID=5a062d3a-6d2a-4f8e-b8c1-1e3b9c8d7a6f
DEVICE=ens33
ONBOOT=yes

中,你可以清晰地看到UUID=5a062d3a-6d2a-4f8e-b8c1-1e3b9c8d7a6f这一行,这种方法不仅让你看到了UUID,还能一览该连接的所有其他配置参数,非常适合进行深入的故障排查。

通过 nmcli dev show 查询设备信息

你可能知道物理网卡的设备名(如ens33),但不确定它关联的是哪个连接配置,这时,nmcli device show命令就派上用场了,它可以显示指定网络设备的详细信息,包括其当前激活的连接配置。

使用以下命令查询设备ens33的信息:

nmcli device show ens33

该命令会输出大量关于设备的详细信息,我们关心的部分通常在GENERAL区域,为了便于阅读,这里用表格形式展示关键信息片段:

CentOS如何正确读取指定网卡的UUID?

参数 描述
GENERAL.DEVICE ens33 物理设备名称
GENERAL.TYPE ethernet 设备类型
GENERAL.HWADDR 00:0C:29:XX:XX:XX MAC地址
GENERAL.MTU 1500 最大传输单元
GENERAL.STATE 100 (已连接) 连接状态
GENERAL.CONNECTION 有线连接 1 当前激活的连接配置名称
GENERAL.CON-PATH /org/freedesktop/NetworkManager/ActiveConnection/1 D-Bus路径

注意,nmcli device show的输出中通常不直接显示UUID,但它会显示GENERAL.CONNECTION,即关联的连接名称,有了这个名称,你就可以再使用方法一中的nmcli connection show "连接名称"来精确获取其UUID了。

不同方法的对比与选择

为了更直观地理解这几种方法的优劣,下表对它们进行了小编总结:

方法 易用性 依赖工具 信息详尽度 适用场景
nmcli con show NetworkManager 快速查询所有连接UUID,脚本化处理
查看配置文件 无(仅需文本阅读器) 深入排查配置问题,手动修改配置
nmcli device show NetworkManager 通过设备名反查连接信息,诊断设备状态

nmcli是现代CentOS系统中最推荐的方式,它提供了与NetworkManager最直接、最全面的交互能力,直接查看配置文件则是一种经典且可靠的备选方案,根据你的具体需求,灵活运用这些工具,将能极大地提升你在CentOS上管理网络的效率和准确性。


相关问答 (FAQs)

为什么我用 nmcli con show 看不到某个网卡的UUID,甚至它根本不在列表中? 解答: 这种情况通常意味着该网卡没有被NetworkManager管理,可能的原因有:1)该网络接口是通过传统的网络脚本(/etc/init.d/network)或旧版的ifcfg-*文件手动配置的,并且设置了NM_CONTROLLED=no;2)该接口可能是一个由其他虚拟化技术(如Docker、Libvirt)管理的虚拟接口,或者是一个网桥、绑定设备的从设备,要使其被NetworkManager管理,你可以编辑其ifcfg-*文件,确保NM_CONTROLLED=yes,然后重启网络服务或使用nmcli con reload重新加载配置,或者直接使用nmtuinmcli创建一个新的连接配置。

UUID和MAC地址有什么根本区别?我能否用MAC地址替代UUID? 解答: UUID和MAC地址是两个完全不同层面的标识符,不能互相替代。MAC地址(Media Access Control Address)是物理层面的,它固化在网卡的硬件中,是全球唯一的硬件地址,用于在局域网中标识一个物理设备,而UUID(Universally Unique Identifier)是软件层面的,由NetworkManager在创建网络配置文件时生成,用于唯一标识一个“网络连接配置”,一块物理网卡(只有一个MAC地址)可以拥有多个不同的网络配置文件(一个用于DHCP自动获取IP,一个用于静态IP),每个配置文件都会有自己独立的UUID,MAC地址标识的是“硬件”,而UUID标识的是“配置策略”,在需要精确定位和应用特定网络策略的场景下,UUID比MAC地址更为灵活和准确。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.