![我需要一个命令来从unix机器创建一个唯一的指纹](https://linux22.com/image/669944/%E6%88%91%E9%9C%80%E8%A6%81%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E6%9D%A5%E4%BB%8Eunix%E6%9C%BA%E5%99%A8%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E5%94%AF%E4%B8%80%E7%9A%84%E6%8C%87%E7%BA%B9.png)
我需要在 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%% *}