golang如何在linux下获取磁盘厂商信息
时间: 2023-12-24 17:02:05 浏览: 227
在Linux下,可以通过读取/sys/block/目录下的文件来获取磁盘信息。具体可以通过以下步骤来获取磁盘厂商信息:
1. 首先需要遍历/sys/block/目录下的所有文件,每个文件对应一个磁盘或分区。
2. 对于每个磁盘或分区,可以读取/sys/block/[device]/device/vendor文件来获取磁盘厂商信息,其中[device]为磁盘或分区的名称。
3. 如果无法获取到厂商信息,可以尝试读取/sys/block/[device]/device/model文件来获取磁盘型号信息。
下面是一个示例代码,实现了获取磁盘厂商信息的功能:
```go
package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
)
func main() {
blockDir := "/sys/block"
devices, err := ioutil.ReadDir(blockDir)
if err != nil {
fmt.Printf("Failed to read directory: %v\n", err)
os.Exit(1)
}
for _, device := range devices {
devicePath := filepath.Join(blockDir, device.Name())
vendorPath := filepath.Join(devicePath, "device", "vendor")
vendorData, err := ioutil.ReadFile(vendorPath)
if err != nil {
// 如果无法获取到厂商信息,尝试读取型号信息
modelPath := filepath.Join(devicePath, "device", "model")
modelData, err := ioutil.ReadFile(modelPath)
if err != nil {
fmt.Printf("Failed to read %s: %v\n", vendorPath, err)
continue
}
fmt.Printf("Device %s: %s\n", device.Name(), string(modelData))
} else {
fmt.Printf("Device %s: %s\n", device.Name(), string(vendorData))
}
}
}
```
阅读全文