diff --git a/aufs/core/hdinfo.go b/aufs/core/hdinfo.go new file mode 100644 index 0000000..77819f7 --- /dev/null +++ b/aufs/core/hdinfo.go @@ -0,0 +1,89 @@ +package core + +import ( + "encoding/json" + "fmt" + "net" + "net/http" + "os" + "os/exec" + "os/user" + "runtime" +) + +// 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 := GetHostIP() + 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: runtime.NumCPU(), + Mem: fmt.Sprintf("%d", runtime.NumGoroutine()), + Disks: "", // 因 getDiskInfo 未定义,暂时使用空字符串占位,需实现 getDiskInfo 函数后再修改 + + } + // 开启跨域 + uCorsHadler(w, r) + json.NewEncoder(w).Encode(response) +} + +func getMachieNet() { + ifaces, err := net.Interfaces() + if err != nil { + fmt.Println("无法获取网络接口信息:", err) + } else { + for _, iface := range ifaces { + fmt.Println("网络接口名称:", iface.Name) + fmt.Println("硬件地址 (MAC):", iface.HardwareAddr) + addrs, _ := iface.Addrs() + for _, addr := range addrs { + fmt.Println("IP地址:", addr.String()) + } + fmt.Println() + } + } +} + +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 +} diff --git a/aufs/main.go b/aufs/main.go index 85941b3..6ce5f16 100644 --- a/aufs/main.go +++ b/aufs/main.go @@ -19,6 +19,9 @@ func startWeb() { http.HandleFunc("/sc", core.SerInfo) // 数据库基础信息 http.HandleFunc("/bs", core.BfsInfo) + // 硬件信息 + http.HandleFunc("/hd", core.Hdinfo) + // sse 推送 http.HandleFunc("/sse", core.SseHandler) // 文件接收