galang获取服务器相关信息
package main
import (
"fmt"
"net"
"os"
"os/exec"
"os/user"
"runtime"
"strings"
)
func getMachineID() (string, error) {
// 执行 "cat /var/lib/dbus/machine-id" 命令获取机器ID
cmd := exec.Command("cat", "/var/lib/dbus/machine-id")
output, err := cmd.Output()
if err != nil {
return "", err
}
// 去除换行符并返回机器ID
machineID := strings.TrimSpace(string(output))
return machineID, nil
}
func getMachieName() (string, error) {
hostname, err := os.Hostname()
if err != nil {
return "", err
}
return hostname, nil
}
func getMachieOs() string {
osName := runtime.GOOS
return osName
}
func getMachieCpu() int {
numCPU := runtime.NumCPU()
return numCPU
}
func getMachieMem() runtime.MemStats {
var m runtime.MemStats
runtime.ReadMemStats(&m)
return m
}
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 main() {
machineID, err := getMachineID()
if err != nil {
fmt.Println("获取机器ID失败:", err)
} else {
fmt.Println("机器ID:", machineID)
}
hostname, err := getMachieName()
if err != nil {
fmt.Println("无法获取主机名:", err)
} else {
fmt.Println("获取主机名:", hostname)
}
osName := getMachieOs()
fmt.Println("操作系统:", osName)
numCPU := getMachieCpu()
fmt.Println("CPU核心数:", numCPU)
m := getMachieMem()
fmt.Printf("总分配内存: %v MB\n", m.TotalAlloc/1024/1024)
fmt.Printf("已分配内存: %v MB\n", m.Alloc/1024/1024)
getMachieNet()
user, err := getCurrentUser()
if err != nil {
fmt.Println("获取用户信息错误:", err)
} else {
fmt.Println("获取用户信息:", user.Username)
}
}