一去不返,便一去不返。
一,什么是utmpdump
https://man.he.net/man1/uuidparse
uuidparse -- 一个解析唯一标识符的实用程序
uuidparse 是一个用于解析通用唯一标识符(UUID) 的命令行工具。它可以接收来自命令行参数或标准输入的 UUID 字符串(以空白字符分隔),并分析其 变体(variant) 和 类型(type),帮助用户理解 UUID 的生成方式和规范来源。
该工具属于 util-linux 软件包,常用于调试、验证或处理 UUID 相关数据。
二,参数信息
[root@master ~]# uuidparse -h用法: uuidparse [options] <uuid ...>选项: -J, --json 使用 JSON 输出格式 -n, --noheadings don't print headings -o, --output <list> COLUMNS to display (see below) -r, --raw 使用原始输出格式 -h, --help 显示此帮助 -V, --version 显示版本可用的输出列: UUID unique identifier VARIANT variant name TYPE 类型名称 TIME 时间戳更多信息请参阅 uuidparse(1)。
三,支持的变体(Variants)
1、支持的变体(Variants)
| |
| Network Computing System 标识符,最早的 UUID 形式。 |
| Open Software Foundation (OSF) 的 DCE(Distributed Computing Environment)UUID。这是目前最常见、符合 RFC 4122 的标准格式。 |
| Microsoft Windows 平台使用的 GUID(Globally Unique Identifier),与 DCE 兼容但字节序可能不同。 |
| 未知或无效的变体,通常表示输入格式错误或非标准 UUID。 |
2、支持的类型(Types)
| |
| 全零 UUID(00000000-0000-0000-0000-000000000000),用于表示“无”或“空”标识符。 |
| |
| 同 time-based,强调使用 MAC 地址和时间生成(即 RFC 4122 版本 1)。 |
| 基于名称 + MD5 哈希生成的 UUID(RFC 4122 版本 3)。 |
| 随机生成的 UUID(RFC 4122 版本 4),最常见于现代系统。 |
| 基于名称 + SHA-1 哈希生成的 UUID(RFC 4122 版本 5)。 |
| |
3、什么是 UUID 变体(Variant)?
UUID 并非只有一种格式。历史上,不同的组织和系统提出了各自的“唯一标识符”方案。为了兼容和区分这些方案,UUID 标准(尤其是 RFC 4122)引入了 variant 字段 —— 它位于 UUID 的第 9 个字节(即第 17 个十六进制字符,形如 xxxxxxxx-xxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 中的 N 的高几位)。
通过检查这个字段的二进制位,可以判断该 UUID 属于哪个“变体家族”。以标准 UUID 为例:
[root@master ~]# uuidgen8b169bec-4afb-40b9-aadf-31e682f7f14a | 17位是a'a' 的二进制:1010高两位:10 → 符合 DCE 变体(10xx)因此:variant = DCE
如何确定是DEC呢
查阅资料可知,变体的可能值:
0xxx → 旧版 NCS(已废弃)10xx → RFC 4122(DCE 变体,常用)110x → 微软 GUID(兼容 RFC 4122)111x → 保留未来使用
总结
| |
| |
| ✅ 现代标准 UUID(RFC 4122),最常见 |
| |
| |
四,例子
# 基本用法(解析单个 UUID)[root@master ~]# uuidparse 550e8400-e29b-41d4-a716-446655440000UUID VARIANT TYPE TIME550e8400-e29b-41d4-a716-446655440000 DCE random #解析多个 UUID[root@master ~]# uuidparse f47ac10b-58cc-4372-a567-0e02b2c3d479 6ba7b810-9dad-11d1-80b4-00c04fd430c8UUID VARIANT TYPE TIMEf47ac10b-58cc-4372-a567-0e02b2c3d479 DCE random 6ba7b810-9dad-11d1-80b4-00c04fd430c8 DCE time-based 1998-02-05 06:13:53,151182+08:00#使用 JSON 格式输出(-J 选项)[root@master ~]# uuidparse -J 550e8400-e29b-41d4-a716-446655440000{ "uuids": [ {"uuid":"550e8400-e29b-41d4-a716-446655440000", "variant":"DCE", "type":"random", "time":null} ]}#自定义输出列(-o 选项)[root@master ~]# uuidparse -o UUID,VARIANT,TYPE 550e8400-e29b-41d4-a716-446655440000UUID VARIANT TYPE550e8400-e29b-41d4-a716-446655440000 DCE random#原始输出格式(-r 选项)[root@master ~]# uuidparse -r 550e8400-e29b-41d4-a716-446655440000UUID VARIANT TYPE TIME550e8400-e29b-41d4-a716-446655440000 DCE random #解析时间戳类型的 UUID[root@master ~]# uuidparse 6ba7b810-9dad-11d1-80b4-00c04fd430c8UUID VARIANT TYPE TIME6ba7b810-9dad-11d1-80b4-00c04fd430c8 DCE time-based 1998-02-05 06:13:53,151182+08:00#解析随机生成的 UUID(版本 4)[root@master ~]# uuidparse $(uuidgen | grep -o -E '[0-9a-f-]{36}')UUID VARIANT TYPE TIME498a06d5-3ca3-45e1-839c-e649a32ddab5 DCE random
关键字段说明
- VARIANT:UUID 的变体类型(通常是
RFC 4122)。 - TYPE:UUID 的生成方式,例如:
nil (0):全零 UUID。dce_time (1):基于时间戳的 UUID(如 6ba7b810-...)。dce_version4 (4):随机生成的 UUID(如 f47ac10b-...)。 - TIME:仅对时间戳类型的 UUID 有效,显示生成时间。
补充说明:
注意事项
- 输入必须符合标准 UUID 字符串格式(8-4-4-4-12 十六进制,带连字符)。
- 若输入包含无效 UUID,对应行将显示
other / unknown。 - Microsoft GUID 在字节序上可能与标准 UUID 不同,但
uuidparse 按字符串解析,不进行字节序转换。
报告问题与获取软件Bug 反馈:https://github.com/karelzak/util-linux/issues软件来源:uuidparse 属于 util-linux 工具包官方下载地址:https://www.kernel.org/pub/linux/utils/util-linux/作者:Sami Kerola <kerolasa@iki.fi>
五,总结
在日常以下场景中可能用到
验证 UUID 格式:快速判断输入是否为合法 UUID。
分析 UUID 来源:区分是时间生成、随机生成还是基于名称哈希。
自动化脚本处理:结合 -J 或 -r 选项,集成到 CI/CD 或日志分析流程中。
调试系统日志:当系统记录了 UUID 但需了解其生成机制时。
uuidparse 是一个轻量、高效的 UUID 分析工具,能够快速识别 UUID 的变体和类型,适用于开发、运维和安全审计等多种场景。通过灵活的输出格式(表格、JSON、原始文本),能帮助我们无缝集成到各类自动化流程中,是处理 UUID 数据的实用工具。
最后的最后(Last but not least),欢迎交流:
关注公众号留言,或者在下方直接留言: