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 mainimport ("fmt""io/ioutil""strings"
)type DMI struct {BiosDate    stringBiosVendor  stringBiosVersion stringBoardAssetTag stringBoardName     stringBoardSerial   stringBoardVendor   stringBoardVersion  stringChassisAssetTag stringChassisSerial   stringChassisType     stringChassisVendor   stringChassisVersion  stringProductName    stringProductSerial  stringProductUuid    stringProductVersion stringModalias  stringSysVendor stringUevent    string
}var SysinfoDmi DMIfunc init() {//biosSysinfoDmi.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")//boardSysinfoDmi.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")//chassisSysinfoDmi.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)
}

执行结果

chassis_asset_tag: 
chassis_type     : 10
chassis_serial   : 
chassis_vendor   : Dell Inc.
chassis_version  : 
#############product info############
product_name   : Latitude 5280
product_serial : 
product_uuid   : 
product_version: 
#############other   info############
Modalias : dmi:bvnDellInc.:bvr1.7.5:bd11/12/2017:svnDellInc.:pnLatitude5280:pvr:rvnDellInc.:rn07C09D:rvrA00:cvnDellInc.:ct10:cvr:
SysVendor: Dell Inc.
Uevent   : MODALIAS=dmi:bvnDellInc.:bvr1.7.5:bd11/12/2017:svnDellInc.:pnLatitude5280:pvr:rvnDellInc.:rn07C09D:rvrA00:cvnDellInc.:ct10:cvr:
bay

linux shell 和 golang 查询服务器硬件信息相关推荐

  1. 使用Shell脚本查询服务器硬件信息

    1.为了方便查询服务器的硬件信息,将需要查询的内容整理成Shell脚本,输出自己想要的格式.其实就是通过dmidecode命令输出,然后通过sed,awk,cut命令的处理. 2.此脚步适用于HP D ...

  2. linux df是否分区,Linux中df命令查询磁盘信息和fdisk命令分区的用法

    df - 报告文件系统磁盘空间的使用情况 总览 df [option]... [file]... posix 选项: [-kp] gnu 选项 (最短方式): [-ahhiklmpv] [-t fst ...

  3. linux more 结合 grep查询日志信息

    线上问题排查,日志无法下载时,可以先用grep 定位到关键字的位置.打印出行号信息.再根据more继续打印出此行号后N行的日志信息. cat: 查看文件内容.创建文件.文件合并.追加文件内容等,会一次 ...

  4. dmidecode服务器型号,linux dmidecode查看服务器硬件信息

    linux dmidecode查看服务器硬件信息 linux中dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示,该命令可以查询BIOS.系统.主板.处理器.内存.缓存等非常重 ...

  5. linux连接oracle的日志,linux shell脚本连接oracle查询数据插入文件和日志文件中

    #!/bin/sh sqlplus "用户名/密码@数据库"< sqlplus "用户名/密码"< sqlplus -S "用户名/密码& ...

  6. 怎么查看linux服务器品牌,怎么查看Linux服务器硬件信息,这些命令告诉你

    Linux服务器配置文档找不到,你还在为查询Linux服务器硬件信息发愁吗?学会这些命令,让你轻松查看Linux服务器的CPU,内存,硬盘,SN序列号等信息,根本就不用去机房. 一.查看CPU信息 C ...

  7. Linux 下用来查询安装包信息的RPM选项

    Linux 下用来查询安装包信息的RPM选项 RPM是RedHat的包管理器,用来安装.卸载.升级和查询基于RedHat Linux的安装包.RHEL和基于它的系统使用rpm命令来完成这些功能. AD ...

  8. linux centos 7 系统性能查询、DHCP租期信息查询、网络五元组

    linux centos 7 系统性能查询 top CPU进程情况 killall 最后一列进程名 中止进程信息. killall -9 进程名 强制中断. sar -n DEV 1 每秒显示所有网卡 ...

  9. Linux环境下查看服务器硬件信息

    Linux环境下查看服务器硬件信息 查看CPU型号       cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c       16  Inte ...

最新文章

  1. java jdk 1.8 安装_下载、安装、配置 java jdk1.8
  2. mysql中如何设置过滤器_mysql 如何动态修改复制过滤器
  3. mysql 的 前导零_将前导零添加到MySQL列?
  4. Zabbix服务器性能优化记录
  5. zz STL 优先队列
  6. android设计招式之美,麦可网Android设计招式之美
  7. 缓存redis的实现思路
  8. sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示
  9. 【Codeforces - 378C】Maze(dfs,思维)
  10. grunt使用小记之uglify:最全的uglify使用DEMO
  11. [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
  12. AC日记——[NOI2006]最大获利 bzoj 1497
  13. shell编程之正则表达式与文本工具
  14. 如何修改macOS文件的默认打开方式?
  15. adb 驱动安装说明文档
  16. FITC-PEG-Pyrene,荧光素聚乙二醇芘丁酸,Pyrene-PEG-Fluorescent
  17. java环境配好后jar文件打开闪退,无打开方式,无反应
  18. 中国Blog现状和发展初探
  19. ionic刷新html页面,Ionic实现页面下拉刷新(ion-refresher)功能代码
  20. APK修改神器:插桩工具 DexInjector

热门文章

  1. Android memory
  2. java gui 颜色从html_Java GUI显示网页并返回HTML
  3. 云原生思想 — 云原生的 DevOps
  4. Openstack组件部署 — Networking service_Compute Node
  5. BC28、BC95通过LWM2M连接电信AEP(ctwing)
  6. 技术分析:搞懂链路追踪
  7. Es6 generator浅入浅出
  8. 每一种SDS都能做超融合吗?
  9. [20170622]传输表空间与dblink.txt
  10. BZOJ 1927 星际竞速