我需要一个命令来从unix机器创build一个独特的指纹

我需要在Unix机器上为我的应用程序创build一个序列号。

  1. 生成的序列号应该是唯一的
  2. 不要随时间改变(只有在硬盘或主板发生变化后才会更改)
  3. 不需要root权限。

我发现,在Ubuntu中有关于下面的文件夹下的硬盘驱动器的一些信息:

/dev/disk/by-id 

这些文件似乎是连接到计算机的硬盘的序列号。 我想用下面的命令生成一个独特的机器指纹。

 ls /dev/disk/by-id | grep -v 'part' 

这可能吗? 这个命令是否符合我上面指定的条件?

唯一标识机器的好方法是使用SMBios UUID值。 在Linux中,可以使用dmidecode工具访问它。

# dmidecode -s system-uuid 1E00CBE0-008C-5900-FBCE-C86000B2350B

另一种方法是使用根文件系统的UUID。 可以在“/ dev / disks / by-uuid”中访问文件系统UUID。 这具有不需要root权限的优点。

另一种方法是使用blkid:

rootNode="$(mount | grep " / ")"; blkid -s UUID -o value ${rootNode%% *}