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() {
getHostInfo()
data := [][]string{}
v, _ := mem.VirtualMemory()
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.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()
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)
}
}