Назад | Перейти на главную страницу

Мне нужна команда для создания уникального отпечатка пальца с машины unix

Мне нужно создать серийный номер для моего приложения на машине Unix.

  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 корневой файловой системы. Доступ к UUID файловой системы можно получить в "/ dev / disks / by-uuid". Это имеет то преимущество, что не требует привилегий root.

Еще один метод использует blkid:

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