golang 完整详细获取cpu id,硬盘等各种硬件信息
时间: 2023-08-01 15:01:25 浏览: 674
完整详细获取CPU ID,硬盘等各种硬件信息
3星 · 编辑精心推荐
在golang中,要完整详细地获取CPU ID、硬盘等各种硬件信息,通常需要使用操作系统(OS)提供的相关接口和系统工具。下面分别介绍如何获取这些信息:
1. 获取CPU ID:
要获取CPU ID,可以使用golang的相关库如`github.com/shirou/gopsutil/cpu`。 该库提供了获取CPU信息的接口。下面是一个示例代码片段:
```go
package main
import (
"fmt"
"github.com/shirou/gopsutil/cpu"
)
func main() {
infos, err := cpu.Info()
if err != nil {
fmt.Printf("Failed to get CPU info: %v", err)
return
}
for _, info := range infos {
fmt.Printf("CPU ID: %v\n", info.SerialNumber) // 获取CPU序列号
}
}
```
2. 获取硬盘信息:
要获取硬盘信息,可以使用golang的库`github.com/shirou/gopsutil/disk`。该库提供了获取硬盘信息的接口。下面是一个示例代码片段:
```go
package main
import (
"fmt"
"github.com/shirou/gopsutil/disk"
)
func main() {
partitions, err := disk.Partitions(false) // 获取分区信息
if err != nil {
fmt.Printf("Failed to get disk partitions: %v", err)
return
}
for _, partition := range partitions {
fmt.Printf("Partition: %v\n", partition.Device)
info, err := disk.Usage(partition.Mountpoint) // 获取分区使用情况
if err != nil {
fmt.Printf("Failed to get disk usage: %v", err)
continue
}
fmt.Printf("Usage: %v\n", info.Used)
}
}
```
以上代码用于获取硬盘的分区信息和使用情况。
除了使用golang的库,也可以通过调用外部系统工具的方式获取硬件信息。例如,可以使用`os/exec`库调用`wmic`命令(Windows环境下)或`lshw`命令(Linux环境下)来获取更详细的硬件信息。
例如,在Linux环境下,可以使用以下代码来获取硬件信息:
```go
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("lshw", "-short")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
fmt.Printf("Failed to get hardware info: %v", err)
return
}
fmt.Printf("Hardware Info:\n%s", out.String())
}
```
以上代码使用`lshw -short`命令获取硬件信息。
需要注意的是,具体获取硬件信息的方式和结果可能因操作系统而异。可以根据实际情况选择合适的方法来获取硬件信息。
阅读全文