package host_info import ( "cmii-uav-watchdog-common/models" "cmii-uav-watchdog-common/wdd_log" "os" "strings" ) // DefaultMotherboardInfo provides a default value for MotherboardInfo. var DefaultMotherboardInfo = models.MotherboardInfo{ Manufacturer: "unknown", Product: "unknown", Version: "unknown", Serial: "unknown", } // readFileWithWarning attempts to read a file and logs a warning if it fails. func readFileWithWarning(path string) ([]byte, error) { value, err := os.ReadFile(path) if err != nil { wdd_log.Warn("无法读取文件 %s: %v", path, err) return nil, err } return value, nil } // GetMotherboardInfo retrieves motherboard information from the system files. func GetMotherboardInfo() models.MotherboardInfo { info := DefaultMotherboardInfo // 初始化为默认值 // 文件路径与对应字段的映射 paths := map[string]*string{ "/sys/class/dmi/id/board_vendor": &info.Manufacturer, "/sys/class/dmi/id/board_name": &info.Product, "/sys/class/dmi/id/board_version": &info.Version, "/sys/class/dmi/id/board_serial": &info.Serial, } // 遍历路径并更新信息 for path, field := range paths { if value, err := readFileWithWarning(path); err == nil { *field = strings.TrimSpace(string(value)) } } return info // 返回最终的主板信息 } /* Motherboard Information: Manufacturer: ASUSTeK COMPUTER INC. Product: ROG STRIX B450-F GAMING Version: Rev 1.xx Serial: 123456789012345678 */