ЦП не имеет серийного номера; возможно, вам нужна базовая информация DMI без привилегий root (Это покажет вам только постоянный идентификатор производителя и модели материнской платы, но не серийный номер):
dmesg | grep -i dmi: | cut -d ":" -f 2-
В противном случае вы можете «указать» dmidecode на запуск от непривилегированного пользователя:
sudo chmod +s /usr/sbin/dmidecode
Тогда вы можете запустить, например:
dmidecode -s system-serial-number
В большинстве случаев «серийный номер системы» похож на «серийный номер шасси» или «серийный номер основной платы». Помните, что не во всех дистрибутивах установлена эта программа, например, в системах на основе Debian есть пакет, названный в его честь.
В противном случае вы можете найти уникальный и постоянный, через систему, идентификатор системы через диск вашей системы; Для этого вы можете выполнить следующее:
mount | grep "on / type" | awk '{print $1}'
Первый даст вам путь к устройству, на котором монтируется ваша система (для моей ОС он вернул / dev / sda7 ), а затем вы можете найти для него идентификатор со следующим:
find /dev/disk/by-id/ -lname "*sda" ! -name "wwn*"
Таким образом, полная команда для поиска уникального идентификатора на жестком диске вашей системы может быть:
find /dev/disk/by-id/ -lname "*`mount | grep " / " | awk '{print $1}' | cut -b 6-8`" ! -name "wwn*" -printf "%f\n"
Я надеюсь, что это может соответствовать вашим потребностям или кому-то еще здесь. Команда cut -b 6-8 может быть не переносимой, поскольку я предполагаю, что имена блочных устройств имеют длину в три символа; более того, путь / dev / disk / by-id / заполняется только управляемыми системами UDEV, и не все дистрибутивы Linux используют его, но я гарантирую, что первые будут работать в Ubuntu.