package api import ( "github.com/gin-gonic/gin" "github.com/shirou/gopsutil/net" ) func Mac(r *GinRouter) { r.GET("/mac/info", MacInfo) } func MacInfo(c *gin.Context, apictx *ApiSession) (interface{}, error) { // diskInfo, _ := disk.Partitions(false) // fmt.Printf("%+v\n", diskInfo) // netInfo, _ := net.Interfaces() // fmt.Printf("%+v\n", netInfo) // cpuInfo, _ := cpu.Info() // fmt.Printf("%+v\n", cpuInfo) // memInfo, _ := mem.VirtualMemory() // fmt.Printf("%+v\n", memInfo) interfaces, err := net.Interfaces() if err != nil { return nil, err } macAddr := getRealMacAddr(interfaces) return UtilMd5(macAddr), nil } // b0:6e:bf:c5:32:30 func getRealMacAddr(netInterfaces []net.InterfaceStat) string { loindex := 0 for _, netInterface := range netInterfaces { if netInterface.Name == "lo" { loindex = netInterface.Index break } } if len(netInterfaces) < loindex+1 { return "" } return netInterfaces[loindex].HardwareAddr }