如何在没有root权限的情况下获取Linux(Ubuntu)下的CPU序列号?
我尝试了cpuid命令,它没有root权限,但似乎返回所有零(我相信因为需要在BIOS中更改某些内容)。
您能否建议我从没有root权限的程序中检索CPU串行的另一种方法,而无需修改BIOS?
答案 0 :(得分:5)
需要root权限。答案是dmidecode。
如果您需要CPU ID:
dmidecode | grep -w ID | sed "s/^.ID\: //g"
这将获得CPU ID,从输出中删除“ID:”
如果您需要收到计算机ID:
dmidecode | grep -w UUID | sed "s/^.UUID\: //g"
如果您希望获得没有root权限的内核uuid,那么:
dmesg | grep UUID | grep "Kernel" | sed "s/.*UUID=//g" | sed "s/\ ro\ quiet.*//g"
答案 1 :(得分:4)
处理器序列号基本上只在Pentium III处理器中。由于提出的隐私问题,英特尔将其从以后的型号中删除。因此,除非您使用PIII AND ,否则您的BIOS设置允许您阅读序列号,所有您将获得的是0。
答案 2 :(得分:1)
cpuid
, sudo
都会为我返回相同的序列号:
% cpuid | grep serial
Processor serial: 0002-0652-0000-0000-0000-0000
% sudo cpuid | grep serial
Processor serial: 0002-0652-0000-0000-0000-0000
除非您指的是其他序列号......?
答案 3 :(得分:1)
正如之前提出此问题的建议,如果您尝试将此用于许可(因为您使用了许可标记),您可能需要尝试MAC地址: CPU serial number
答案 4 :(得分:1)
将许可证绑定到其可执行文件安装到用户文件系统时获得的inode编号。如果他们被移到其他地方,他们就会改变。
缺点是如果必须从备份中恢复程序,则可能无法保留这些数字。
我以前做过这种事。您必须非常慷慨地让真正的用户在更换硬件时激活许可证。
答案 5 :(得分:0)
您检查过dmesg
吗?它位于/bin
答案 6 :(得分:0)
CPU没有序列号;也许您想要没有root特权的DMI基本信息(这只会向您显示主板制造商和型号的永久ID,但没有序列号):
btn
否则,您可以“告诉” dmidecode 从无特权的用户运行:
dmesg | grep -i dmi: | cut -d ":" -f 2-
那么您可以运行例如:
sudo chmod +s /usr/sbin/dmidecode
在大多数情况下,“ system-serial-number”类似于“ chassis-serial-number”或“ baseboard-serial-number”。请记住,并非所有发行版都安装了该程序,例如,基于Debian的系统都有一个以该程序命名的软件包。
否则,您可以通过系统磁盘找到唯一且永久的,通过安装的系统ID;为此,您可以运行以下命令:
dmidecode -s system-serial-number
前者将为您提供设备安装系统的路径(对于我的操作系统,它返回 / dev / sda7 ),然后您可以通过以下内容找到它的ID:
mount | grep "on / type" | awk '{print $1}'
因此从系统硬盘中查找唯一ID的完整命令可能是:
find /dev/disk/by-id/ -lname "*sda" ! -name "wwn*"
我希望这可能适合您或其他人的需要。命令 cut -b 6-8 可能无法移植,因为我假设块设备名称的长度为3个字符。此外, / dev / disk / by-id / 路径仅由UDEV托管系统填充,并非所有Linux发行版都使用它,但是我确保您可以在Ubuntu中使用它。