我正在开发一个模块秃鹰这将收集硬件信息,以便我们可以使用实际数字来计算节能等。困难在于我并不维护大多数客户端系统,所以我必须在不假设系统上可能安装或可能不安装什么的情况下编写此代码,并且我不能做任何需要 root 访问权限的事情。
我查看了各种实用程序(lshal、lshw、hwinfo 等),似乎没有一个是跨 Debian 和 RedHat 系统通用的。我既没有权力,也不想强迫校园里的其他部门安装其中一个软件包。
dmidecode 似乎非常通用,但如果没有 root 权限,它就毫无用处。我无法在 /proc 中找到任何包含系统制造商和型号的文件。我是否遗漏了什么,或者我需要尝试让所有分布式管理员安装上述实用程序之一?
答案1
您将需要 dmidecode 来获取该信息 - 但即使这样也不能保证您可以获得正确的硬件信息。它应该适用于戴尔和惠普服务器机器,但除此以外的一切都会变得有点冒险。
答案2
它有点二手,但您可以尝试运行“dmesg”,看看是否有任何有趣的东西。通常不需要 root 权限。
答案3
您要查找的文件位于 中/sys
,而不是/proc
。查看目录 中有哪些可用内容/sys/devices/virtual/dmi/id
。例如:
$ cd /sys/devices/virtual/dmi/id
$ cat sys_vendor product_name product_version
System76
Pangolin
pang11
$ ls -l product_*
-r--r--r-- 1 root root 4096 May 24 00:09 product_family
-r--r--r-- 1 root root 4096 May 9 15:38 product_name
-r-------- 1 root root 4096 May 24 00:09 product_serial
-r--r--r-- 1 root root 4096 May 24 00:09 product_sku
-r-------- 1 root root 4096 May 9 15:38 product_uuid
-r--r--r-- 1 root root 4096 May 9 15:38 product_version
正如文件权限所示,您需要以 root 身份获取序列号或 UUID,但其他信息(如名称、版本和供应商)可供所有用户访问。