语音解读
图文解释
dmidecode 是一个读取电脑 DMI(桌面管理接口(Desktop Management Interface))表内容并且以人类可读的格式显示系统硬件信息的工具。(也有人说是读取 SMBIOS ——系统管理 BIOS(System Management BIOS))
这个表包含系统硬件组件的说明,也包含如序列号、制造商、发布日期以及 BIOS 修订版本号等其它有用的信息。
DMI 表不仅描述了当前的系统构成,还可以报告可能的升级信息(比如可以支持的最快的 cpu 或者最大的内存容量)。
这将有助于分析你的硬件兼容性,比如是否支持最新版本的程序。
shell 方式获取
dmidecode -t system
dmidecode 2.12
内核在 /sys 目录下的文件中公开了一些 DMI 信息。因此,我们可以通过如下方式运行 grep 命令来轻易地获取机器类型。
grep “” /sys/class/dmi/id/[pbs]*
使用 cat 命令仅打印出特定的详细信息。
cat /sys/class/dmi/id/board_vendor
cat /sys/class/dmi/id/product_name
cat /sys/class/dmi/id/product_serial
cat /sys/class/dmi/id/bios_version
dmesg 命令是在 Linux 上 syslogd 或 klogd 启动前用来记录内核消息(启动阶段的消息)的。它通过读取内核的环形缓冲区来获取数据。在排查问题或只是尝试获取系统硬件信息时,dmesg 非常有用。
dmesg | grep -i DMI
[root@zgl ~]# dmesg | grep -i DMI
[ 0.000000] DMI: Inspur NF8460M4/NF8460M4,BIOS 4.2.17 01/28/2017
golang 方式获取
代码如下:
package main
import (
"fmt"
"io/IoUtil"
"strings"
)
type DMI struct {
BiosDate string
Biosvendor string
Biosversion string
BoardAssetTag string
BoardName string
BoardSerial string
Boardvendor string
BoardVersion string
ChassisAssetTag string
ChassisSerial string
ChassisType string
Chassisvendor string
Chassisversion string
ProductName string
ProductSerial string
ProductUuid string
ProductVersion string
Modalias string
Sysvendor string
Uevent string
}
var SysinfoDmi DMI
func init() {
//bios
SysinfoDmi.BiosDate = getStringFromFile("/sys/class/dmi/id/bios_date")
SysinfoDmi.Biosvendor = getStringFromFile("/sys/class/dmi/id/bios_vendor")
SysinfoDmi.Biosversion = getStringFromFile("/sys/class/dmi/id/bios_version")
//board
SysinfoDmi.BoardAssetTag = getStringFromFile("/sys/class/dmi/id/board_asset_tag")
SysinfoDmi.BoardName = getStringFromFile("/sys/class/dmi/id/board_name")
SysinfoDmi.BoardSerial = getStringFromFile("/sys/class/dmi/id/board_serial")
SysinfoDmi.Boardvendor = getStringFromFile("/sys/class/dmi/id/board_vendor")
SysinfoDmi.BoardVersion = getStringFromFile("/sys/class/dmi/id/board_version")
//chassis
SysinfoDmi.ChassisAssetTag = getStringFromFile("/sys/class/dmi/id/chassis_asset_tag")
SysinfoDmi.ChassisSerial = getStringFromFile("/sys/class/dmi/id/chassis_serial")
SysinfoDmi.ChassisType = getStringFromFile("/sys/class/dmi/id/chassis_type")
SysinfoDmi.Chassisvendor = getStringFromFile("/sys/class/dmi/id/chassis_vendor")
SysinfoDmi.Chassisversion = getStringFromFile("/sys/class/dmi/id/chassis_version")
SysinfoDmi.ProductName = getStringFromFile("/sys/class/dmi/id/product_name")
SysinfoDmi.ProductSerial = getStringFromFile("/sys/class/dmi/id/product_serial")
SysinfoDmi.ProductUuid = getStringFromFile("/sys/class/dmi/id/product_uuid")
SysinfoDmi.ProductVersion = getStringFromFile("/sys/class/dmi/id/product_version")
SysinfoDmi.Modalias = getStringFromFile("/sys/class/dmi/id/modalias")
SysinfoDmi.Sysvendor = getStringFromFile("/sys/class/dmi/id/sys_vendor")
SysinfoDmi.Uevent = getStringFromFile("/sys/class/dmi/id/uevent")
}
func getStringFromFile(path string) string {
//读取文件全部内容
b,err := IoUtil.ReadFile(path)
if err != nil {
return ""
}
return strings.Replace(string(b),"\n","",-1)
}
func main() {
fmt.Println("#############bios info#############")
fmt.Println("bios_date:",SysinfoDmi.BiosDate)
fmt.Println("bios_vend:",SysinfoDmi.Biosvendor)
fmt.Println("bios_vers:",SysinfoDmi.Biosversion)
fmt.Println("#############board info############")
fmt.Println("board_asset_tag:",SysinfoDmi.BoardAssetTag)
fmt.Println("board_name :",SysinfoDmi.BoardName)
fmt.Println("board_serial :",SysinfoDmi.BoardSerial)
fmt.Println("board_vendor :",SysinfoDmi.Boardvendor)
fmt.Println("board_version :",SysinfoDmi.BoardVersion)
fmt.Println("#############chassis info############")
fmt.Println("chassis_asset_tag:",SysinfoDmi.ChassisAssetTag)
fmt.Println("chassis_type :",SysinfoDmi.ChassisType)
fmt.Println("chassis_serial :",SysinfoDmi.ChassisSerial)
fmt.Println("chassis_vendor :",SysinfoDmi.Chassisvendor)
fmt.Println("chassis_version :",SysinfoDmi.Chassisversion)
fmt.Println("#############product info############")
fmt.Println("product_name :",SysinfoDmi.ProductName)
fmt.Println("product_serial :",SysinfoDmi.ProductSerial)
fmt.Println("product_uuid :",SysinfoDmi.ProductUuid)
fmt.Println("product_version:",SysinfoDmi.ProductVersion)
fmt.Println("#############other info############")
fmt.Println("Modalias :",SysinfoDmi.Modalias)
fmt.Println("Sysvendor:",SysinfoDmi.Sysvendor)
fmt.Println("Uevent :",SysinfoDmi.Uevent)
fmt.Println("bay")
// fmt.Printf("%+v\n",SysinfoDmi)
}
执行结果