From 8483e13a4231edff2bb2b59ce577f6bba76e40f5 Mon Sep 17 00:00:00 2001 From: kylinhao Date: Thu, 9 Dec 2021 01:51:12 +0800 Subject: [PATCH 1/2] NetworkConfig --- pkg/utils/os/network.go | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/pkg/utils/os/network.go b/pkg/utils/os/network.go index cf1f67e0..c95c67f1 100644 --- a/pkg/utils/os/network.go +++ b/pkg/utils/os/network.go @@ -1 +1,53 @@ package os + +import ( + "fmt" + + "github.com/shirou/gopsutil/net" +) + +type NetConnect struct { + Localaddr string + Remoteaddr string + Status string + Uids []int32 + Pid int32 +} + +//获取当前TCP网络连接信息 +func GetTCP() []NetConnect { + info, _ := net.Connections("tcp") + tcpConf := make([]NetConnect, 0) + for _, value := range info { + tmp := NetConnect{} + tmp.Localaddr = value.Laddr.IP + ":" + fmt.Sprint(value.Laddr.Port) + tmp.Remoteaddr = value.Raddr.IP + ":" + fmt.Sprint(value.Raddr.Port) + tmp.Status = value.Status + tmp.Uids = value.Uids + tmp.Pid = value.Pid + tcpConf = append(tcpConf, tmp) + } + return tcpConf +} + +//获取当前UDP网络连接信息 +func GetUDP() []NetConnect { + info, _ := net.Connections("udp") + tcpConf := make([]NetConnect, 0) + for _, value := range info { + tmp := NetConnect{} + tmp.Localaddr = value.Laddr.IP + ":" + fmt.Sprint(value.Laddr.Port) + tmp.Remoteaddr = value.Raddr.IP + ":" + fmt.Sprint(value.Raddr.Port) + tmp.Status = value.Status + tmp.Uids = value.Uids + tmp.Pid = value.Pid + tcpConf = append(tcpConf, tmp) + } + return tcpConf +} + +//获取网络读写字节/包的个数 +func GetIOCounter() []net.IOCountersStat { + info, _ := net.IOCounters(true) + return info +} -- Gitee From 8ac98abf5f4e0fa252fb410c2cfbf7703732e62f Mon Sep 17 00:00:00 2001 From: kylinhao Date: Mon, 13 Dec 2021 09:40:26 +0800 Subject: [PATCH 2/2] add NICConfig --- pkg/utils/os/network.go | 81 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 5 deletions(-) diff --git a/pkg/utils/os/network.go b/pkg/utils/os/network.go index c95c67f1..91a1b41e 100644 --- a/pkg/utils/os/network.go +++ b/pkg/utils/os/network.go @@ -1,9 +1,14 @@ package os import ( + "bufio" "fmt" + "regexp" + "strings" "github.com/shirou/gopsutil/net" + "openeluer.org/PilotGo/PilotGo/pkg/logger" + "openeluer.org/PilotGo/PilotGo/pkg/utils" ) type NetConnect struct { @@ -13,10 +18,25 @@ type NetConnect struct { Uids []int32 Pid int32 } +type IOCnt struct { + Name string + BytesSent uint64 + BytesRecv uint64 + PacketsSent uint64 + PacketsRecv uint64 +} +type NetInterfaceCard struct { + Name string + IPAddr string + MacAddr string +} //获取当前TCP网络连接信息 func GetTCP() []NetConnect { - info, _ := net.Connections("tcp") + info, err := net.Connections("tcp") + if err != nil { + logger.Error("tcp信息获取失败: ", err) + } tcpConf := make([]NetConnect, 0) for _, value := range info { tmp := NetConnect{} @@ -32,7 +52,10 @@ func GetTCP() []NetConnect { //获取当前UDP网络连接信息 func GetUDP() []NetConnect { - info, _ := net.Connections("udp") + info, err := net.Connections("udp") + if err != nil { + logger.Error("udp信息获取失败: ", err) + } tcpConf := make([]NetConnect, 0) for _, value := range info { tmp := NetConnect{} @@ -47,7 +70,55 @@ func GetUDP() []NetConnect { } //获取网络读写字节/包的个数 -func GetIOCounter() []net.IOCountersStat { - info, _ := net.IOCounters(true) - return info +func GetIOCounter() []IOCnt { + info, err := net.IOCounters(true) + if err != nil { + logger.Error("网络读写字节/包的个数获取失败: ", err) + } + IOConf := make([]IOCnt, 0) + for _, value := range info { + tmp := IOCnt{} + tmp.Name = value.Name + tmp.BytesSent = value.BytesSent + tmp.BytesRecv = value.BytesRecv + tmp.PacketsSent = value.PacketsSent + tmp.PacketsRecv = value.PacketsRecv + IOConf = append(IOConf, tmp) + } + return IOConf +} + +func GetNICConfig() []NetInterfaceCard { + NICConfig := make([]NetInterfaceCard, 0) + result, err := utils.RunCommand("cat /proc/net/arp") + if err != nil { + logger.Error("网卡信息获取失败: ", err) + } + reader := strings.NewReader(result) + scanner := bufio.NewScanner(reader) + + for { + + if !scanner.Scan() { + break + } + line := scanner.Text() + line = strings.TrimSpace(line) + + reg1 := regexp.MustCompile(`[A-Fa-f0-9]{2}(:[A-Fa-f0-9]{2}){5}`) + reg2 := regexp.MustCompile(`([0-9]{1,3}.){3}[0-9]`) + reg3 := regexp.MustCompile(`[a-zA-Z0-9]+$`) + x := reg1.FindAllString(line, -1) + y := reg2.FindAllString(line, -1) + z := reg3.FindAllString(line, -1) + if x == nil || y == nil || z == nil { + continue + } + tmp := NetInterfaceCard{} + tmp.IPAddr = y[0] + tmp.MacAddr = x[0] + tmp.Name = z[0] + NICConfig = append(NICConfig, tmp) + } + return NICConfig } -- Gitee