package core import ( "aufs/config" "encoding/json" "fmt" "net" "net/http" "os" "os/exec" "os/user" "runtime" "strings" ) // json 结构体 type HdResp struct { Status string `json:"status"` //状态 Hip string `json:"hostip"` //主机ip Hname string `json:"hostname"` //主机名 Cpu string `json:"cpu"` //cpu Mem string `json:"mem"` //内存 Disks string `json:"disks"` //磁盘 Net string `json:"net"` //网络 } // 服务器的硬件信息 func Hdinfo(w http.ResponseWriter, r *http.Request) { // 获取服务器的信息 hostip, err := config.GetLocalIP() if err != nil { fmt.Println("获取主机IP失败:", err) return } hostname, err := os.Hostname() if err != nil { fmt.Println("获取主机名失败:", err) return } // respone file list response := HdResp{ Status: "success", Hip: hostip, Hname: hostname, Cpu: fmt.Sprintf("%d", runtime.NumCPU()), // cpu、的数量 Mem: fmt.Sprintf("%d", runtime.NumGoroutine()), Disks: "", // 因 getDiskInfo 未定义,暂时使用空字符串占位,需实现 getDiskInfo 函数后再修改, Net: getMachieNet(), // 因 getMachieNet 未定义,暂时使用空字符串占位,需实现 getMachieNet 函数后再修改, } // 开启跨域 uCorsHadler(w, r) json.NewEncoder(w).Encode(response) } func getMachieNet() string { var ret []string ifaces, err := net.Interfaces() if err != nil { fmt.Println("无法获取网络接口信息:", err) } else { for _, iface := range ifaces { ret = append(ret, iface.Name) ret = append(ret, iface.HardwareAddr.String()) // ip地址信息等 var ipaddr []string addrs, _ := iface.Addrs() for _, addr := range addrs { ipaddr = append(ipaddr, addr.String()) } // 合并到ret 中 ret = append(ret, strings.Join(ipaddr, ",")) // fmt.Println("网络接口名称:", iface.Name) // fmt.Println("硬件地址 (MAC):", iface.HardwareAddr) // addrs, _ := iface.Addrs() // for _, addr := range addrs { // fmt.Println("IP地址:", addr.String()) // } // fmt.Println() } } return strings.Join(ret, ",") } func getCurrentUser() (*user.User, error) { currentUser, err := user.Current() if err != nil { return nil, err } return currentUser, nil } func getDiskInfo() (string, error) { var diskInfo string // 执行 df 命令获取磁盘信息 cmd := exec.Command("df", "-h") output, err := cmd.Output() if err != nil { return "", err } diskInfo = string(output) return diskInfo, nil }