From 1333eb85bbd698b75abcc87800a9c7165f5c4705 Mon Sep 17 00:00:00 2001 From: starainrt Date: Fri, 3 Feb 2023 13:53:42 +0800 Subject: [PATCH] adjust linux network speed monitor --- network_unix.go | 25 ++++++++++++++++--------- typed.go | 8 +++++--- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/network_unix.go b/network_unix.go index 508bf0c..5daefeb 100644 --- a/network_unix.go +++ b/network_unix.go @@ -1,3 +1,4 @@ +//go:build !windows // +build !windows package staros @@ -67,7 +68,13 @@ func NetSpeeds(duration time.Duration) ([]NetSpeed, error) { for k, v := range list1 { recv := float64(list2[k].RecvBytes-v.RecvBytes) / duration.Seconds() send := float64(list2[k].SendBytes-v.SendBytes) / duration.Seconds() - res = append(res, NetSpeed{v.Name, recv, send}) + res = append(res, NetSpeed{ + Name: v.Name, + RecvSpeeds: recv, + SendSpeeds: send, + RecvBytes: list2[k].RecvBytes, + SendBytes: list2[k].SendBytes, + }) } return res, nil } @@ -87,12 +94,12 @@ func NetSpeedsByName(duration time.Duration, name string) (NetSpeed, error) { // NetConnections return all TCP/UDP/UNIX DOMAIN SOCKET Connections // if your uid != 0 ,and analysePid==true ,you should have CAP_SYS_PRTACE and CAP_DAC_OVERRIDE/CAP_DAC_READ_SEARCH Caps -func NetConnections(analysePid bool,types string) ([]NetConn, error) { +func NetConnections(analysePid bool, types string) ([]NetConn, error) { var result []NetConn var inodeMap map[string]int64 var err error var fileList []string - if types=="" || strings.Contains(strings.ToLower(types),"all") { + if types == "" || strings.Contains(strings.ToLower(types), "all") { fileList = []string{ "/proc/net/tcp", "/proc/net/tcp6", @@ -101,14 +108,14 @@ func NetConnections(analysePid bool,types string) ([]NetConn, error) { "/proc/net/unix", } } - if strings.Contains(strings.ToLower(types),"tcp") { - fileList =append(fileList,"/proc/net/tcp","/proc/net/tcp6") + if strings.Contains(strings.ToLower(types), "tcp") { + fileList = append(fileList, "/proc/net/tcp", "/proc/net/tcp6") } - if strings.Contains(strings.ToLower(types),"udp") { - fileList =append(fileList,"/proc/net/udp","/proc/net/udp6") + if strings.Contains(strings.ToLower(types), "udp") { + fileList = append(fileList, "/proc/net/udp", "/proc/net/udp6") } - if strings.Contains(strings.ToLower(types),"unix") { - fileList =append(fileList,"/proc/net/unix") + if strings.Contains(strings.ToLower(types), "unix") { + fileList = append(fileList, "/proc/net/unix") } if analysePid { inodeMap, err = GetInodeMap() diff --git a/typed.go b/typed.go index 7798734..942fb2e 100644 --- a/typed.go +++ b/typed.go @@ -35,9 +35,11 @@ type NetAdapter struct { } type NetSpeed struct { - Name string - RecvBytes float64 - SendBytes float64 + Name string + RecvSpeeds float64 + SendSpeeds float64 + RecvBytes uint64 + SendBytes uint64 } // Process 定义一个进程的信息