linux shell 和 golang 查询服务器硬件信息
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 查询服务器硬件信息相关推荐
- 使用Shell脚本查询服务器硬件信息
1.为了方便查询服务器的硬件信息,将需要查询的内容整理成Shell脚本,输出自己想要的格式.其实就是通过dmidecode命令输出,然后通过sed,awk,cut命令的处理. 2.此脚步适用于HP D ...
- linux df是否分区,Linux中df命令查询磁盘信息和fdisk命令分区的用法
df - 报告文件系统磁盘空间的使用情况 总览 df [option]... [file]... posix 选项: [-kp] gnu 选项 (最短方式): [-ahhiklmpv] [-t fst ...
- linux more 结合 grep查询日志信息
线上问题排查,日志无法下载时,可以先用grep 定位到关键字的位置.打印出行号信息.再根据more继续打印出此行号后N行的日志信息. cat: 查看文件内容.创建文件.文件合并.追加文件内容等,会一次 ...
- dmidecode服务器型号,linux dmidecode查看服务器硬件信息
linux dmidecode查看服务器硬件信息 linux中dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示,该命令可以查询BIOS.系统.主板.处理器.内存.缓存等非常重 ...
- linux连接oracle的日志,linux shell脚本连接oracle查询数据插入文件和日志文件中
#!/bin/sh sqlplus "用户名/密码@数据库"< sqlplus "用户名/密码"< sqlplus -S "用户名/密码& ...
- 怎么查看linux服务器品牌,怎么查看Linux服务器硬件信息,这些命令告诉你
Linux服务器配置文档找不到,你还在为查询Linux服务器硬件信息发愁吗?学会这些命令,让你轻松查看Linux服务器的CPU,内存,硬盘,SN序列号等信息,根本就不用去机房. 一.查看CPU信息 C ...
- Linux 下用来查询安装包信息的RPM选项
Linux 下用来查询安装包信息的RPM选项 RPM是RedHat的包管理器,用来安装.卸载.升级和查询基于RedHat Linux的安装包.RHEL和基于它的系统使用rpm命令来完成这些功能. AD ...
- linux centos 7 系统性能查询、DHCP租期信息查询、网络五元组
linux centos 7 系统性能查询 top CPU进程情况 killall 最后一列进程名 中止进程信息. killall -9 进程名 强制中断. sar -n DEV 1 每秒显示所有网卡 ...
- Linux环境下查看服务器硬件信息
Linux环境下查看服务器硬件信息 查看CPU型号 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 16 Inte ...
最新文章
- java jdk 1.8 安装_下载、安装、配置 java jdk1.8
- mysql中如何设置过滤器_mysql 如何动态修改复制过滤器
- mysql 的 前导零_将前导零添加到MySQL列?
- Zabbix服务器性能优化记录
- zz STL 优先队列
- android设计招式之美,麦可网Android设计招式之美
- 缓存redis的实现思路
- sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示
- 【Codeforces - 378C】Maze(dfs,思维)
- grunt使用小记之uglify:最全的uglify使用DEMO
- [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
- AC日记——[NOI2006]最大获利 bzoj 1497
- shell编程之正则表达式与文本工具
- 如何修改macOS文件的默认打开方式?
- adb 驱动安装说明文档
- FITC-PEG-Pyrene,荧光素聚乙二醇芘丁酸,Pyrene-PEG-Fluorescent
- java环境配好后jar文件打开闪退,无打开方式,无反应
- 中国Blog现状和发展初探
- ionic刷新html页面,Ionic实现页面下拉刷新(ion-refresher)功能代码
- APK修改神器:插桩工具 DexInjector