我需要在 Unix 机器上为我的应用程序创建一个序列号。
- 生成的序列号应该是唯一的
- 不会随时间而改变(仅在硬盘或主板改变后改变)
- 不需要root权限。
我发现在 Ubuntu 中以下文件夹下有一些有关硬盘的信息:
/dev/disk/by-id
这些文件似乎是连接到机器的硬盘的序列号。我想使用以下命令生成机器的唯一指纹。
ls /dev/disk/by-id | grep -v 'part'
这可能吗?这个命令是否满足我上面指定的条件?
答案1
唯一标识机器的一个好方法是通过 SMBios UUID 值。在 Linux 中,可以使用 dmidecode 工具访问它。
# dmidecode -s system-uuid 1E00CBE0-008C-5900-FBCE-C86000B2350B
另一种方法是使用根文件系统的 UUID。文件系统 UUID 可以在“/dev/disks/by-uuid”中访问。这样做的好处是不需要 root 权限。
另一种方法是使用 blkid:
rootNode="$(mount | grep " / ")"; blkid -s UUID -o value ${rootNode%% *}