唯一的Linux系统标识符


0

我鼓励我的学生在他们的计算机上安装Linux发行版。为了确保他们已完成任务,我请他们执行此命令以生成唯一标识符:

echo $(sudo dmidecode -t 4 | grep ID | sed 's/.*ID://;s/ //g') $(ifconfig | grep -oP 'HWaddr \K.*' | sed 's/://g') | sha256sum | awk '{print $1}'

...并向我发送获得的十六进制字符串。

现在,许多学生提供相同的字符串。这个字符串对每个安装都不是唯一的吗?(我在每台机器上都获得了不同的一台),还是作弊?


如果您希望学生向您提供一个唯一的编号,证明他们安装了自己的Linux版本,您应该询问他们的磁盘UUID编号,请参阅en.wikipedia.org/wiki/Universally_unique_identifier。你可能会问他们运行一个命令,uuidgen并检查三个最左边的部分是十六进制数,而最右边的两个部分只是八进制数。
MariusMatutiae 2015年

好。虽然我没有完全通过验证步骤。运行命令时我获得五个十六进制数,我怎么知道它是一个有效的UUID?最后两个不是八进制,而且,每次运行命令时,它都会生成一个不同的UUID,为任何学生提供在配合中分配UUID的方法。
nightcod3r 2015年

Answers:


0

实际上很可能:我家里的两台计算机都没有dmidecode安装,而且ifconfigPATH适合常规用户,所以我在两者上都得到了相同的字符串:

01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b

那是你的学生给你的身份证吗?

你应该考虑sudoifconfig命令前添加,也许可以添加与日期相关的东西,比如stat /bin/sh | grep Change。但是,如果您不信任您的学生,您打算如何验证他们提供的ID是否与真实系统相对应?


正确,该字符串是最常见的。我真的没有方法来验证它是一个有效的标识符,只是假设他们不愿意走那么远。您知道有任何方法可以对任务进行可靠的验证吗?
nightcod3r 2015年

0

您可以通过获取硬盘驱动器的序列号来验证它们。

lsblk --nodeps -no serial /dev/sda

示例序列号为6VEHJPW7


在编写时,该命令在我的系统中不起作用。
nightcod3r 2015年

你得到的错误是什么?
Shameerariff

否则你可以使用'/ sbin / udevadm info --query = property --name = sda | grep ID_SERIAL_SHORT'
Shameerariff

这就是我得到的(Ubuntu 14.04):lsblk: unknown column: serial在lubuntu系统上它运行得很好......
nightcod3r 2015年

我使用lubuntu和Im使用这些命令进行磁盘识别。您可以尝试为Ubuntu 14.04
Shameerariff
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.