golang获取主机信息

Code
package main

import (
	"fmt"
	"os"
	"strconv"

	"github.com/olekukonko/tablewriter"
	"github.com/shirou/gopsutil/disk"
	"github.com/shirou/gopsutil/host"
	"github.com/shirou/gopsutil/load"
	"github.com/shirou/gopsutil/mem"
	"github.com/shirou/gopsutil/net"
)

/*
func main() {

	//p, _ := cpu.Percent(time.Second, false)
	//fmt.Printf("CPU:%.1f%%", p[0])

	data := [][]string{}
	p_Percent, _ := cpu.Percent(time.Second, false)
	p_count, _ := cpu.Counts(true)

	table := tabwriter.NewWriter(os.Stdout)
	table.SetHeader([]string{"项目", "数量", "百分比"})

	data = append(data, []string{"CPU", fmt.Sprintf("%d核", p_count),
		fmt.Sprintf("%.1f%%", p_Percent[0])})
	for _, v := range data {
		table.Append(v)
	}
	table.Render()

}
*/

func main() {

	//http.HandleFunc("/", home)
	// http.ListenAndServe(":80", nil)

	getHostInfo()

	data := [][]string{}
	v, _ := mem.VirtualMemory()

	//fmt.Printf("全部内存:%dG", v.Total/1024/1024/1024)
	//fmt.Printf("\r已经使用内存:%.1f%%", v.UsedPercent)
	//fmt.Printf("\r闲置可用内存:%vG-", v.Available/1024/1024/1024)
	//需要转型
	num, _ := strconv.ParseFloat(fmt.Sprintf("\r已使用百分比:%.2f", v.UsedPercent), 64)
	fmt.Println(num)

	data = append(data, []string{"CPU", fmt.Sprintf("%d核", v.Total/1024/1024/1024+1)})
	//data = append(data, []string{"MEM", fmt.Sprintf("%dG", v.Available/1024/1024/1024)})
	data = append(data, []string{"MEM", fmt.Sprintf("%dG", v.Total/1024/1024/1024+1)})
	table := tablewriter.NewWriter(os.Stdout)
	table.SetHeader([]string{"项目", "数量"})

	for _, v := range data {
		table.Append(v)

	}
	table.Render()
	fmt.Printf("\r已经使用内存:%.1f%%\n", v.UsedPercent)
	fmt.Printf("\r闲置可用内存:%vG\n", v.Available/1024/1024/1024)

	getCpuLoad()
	getDiskInfo()
	getNetInfo()

}

func getCpuLoad() {
	info, _ := load.Avg()

	// CPU负载信息
	fmt.Printf("CPU当前负载信息:%v\n", info)
}

func getHostInfo() {
	nInfo, _ := host.Info()
	fmt.Printf("主机名:%v", nInfo.Hostname)
}

func getDiskInfo() {

	parts, _ := disk.Partitions(true)
	for _, part := range parts {
		fmt.Printf("part:%v\n", part.String())
		diskInfo, _ := disk.Usage(part.Mountpoint)
		fmt.Printf("已使用:%v\n 可使用:%v\n 磁盘总量:%v\n", diskInfo.Used/1024/1024/1024, diskInfo.Free/1024/1024/1024, diskInfo.Total/1024/1024/1024)
	}

}

func getNetInfo() {
	info, _ := net.IOCounters(true)
	for index, v := range info {
		fmt.Printf("网卡使用情况: %v:%v\n send:%v\n recv:%v\n", index, v, v.BytesSent, v.BytesRecv)

	}
}

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值