golang获取服务器相关信息

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)
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值