2015-02-10 79 views
3

由于某些原因,我需要获得Linux系统的唯一标识符,该系统在系统重新启动时不会更改(但可能会在用户更换可命名数量的硬件或格式化硬盘时更改)。获取系统的唯一标识符(不是MAC地址)?

以下解决方案可能:

  • 使用MAC地址(这已被使用,但无法在某些系统上 因为没有网络接口)
  • 使用BLKID获得UUID的分区 - 此命令不是 在所有系统上都可用,并且 自动找出要使用哪个分区有点困难

那么......任何其他想法如何唯一地识别一个系统?

谢谢!

+0

[此](http://www.binarytides.com/linux-commands-hardware-info/)可以是有帮助的。特别是hdparm似乎对我有效。 – 2015-02-10 14:59:53

+2

http://en.wikipedia.org/wiki/Ship_of_Theseus祝你好运... – 2015-02-10 14:59:58

+2

请问你需要什么?也许有一些其他解决方案不需要这样一个唯一的标识符。 – 2015-02-10 15:01:03

回答

1

我认为你的问题的答案将取决于你认为是系统的“永久”部分。假设您决定从应用程序的角度来看,硬盘分区是半永久性的,然后计算/proc/paritions的某些内容的散列。

在bash,类似:

#!/bin/sh 
cat /proc/partitions |sha1sum|cut "-d " -f1 
+0

使用'#!/ bin/sh'会更便携并且可能更快(例如,在Debian中它使用更快的Dash shell)。通常没有理由使用Bash脚本编写IMO。 – 2015-02-10 15:25:11

+0

好点 - 编辑应用。 – user590028 2015-02-10 15:33:13