From 19c423284adb6f0c357b39704c4b068879e27bf1 Mon Sep 17 00:00:00 2001 From: iluobei Date: Fri, 24 Apr 2026 17:27:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E6=BB=A4=E8=99=9A=E6=8B=9F=E7=BD=91?= =?UTF-8?q?=E5=8D=A1=E6=B5=81=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/agent/client.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/internal/agent/client.go b/internal/agent/client.go index a0d09ae..afa36df 100644 --- a/internal/agent/client.go +++ b/internal/agent/client.go @@ -912,12 +912,13 @@ func (c *Client) getSystemNetworkStats() (rxBytes, txBytes int64) { lines := strings.Split(string(data), "\n") for _, line := range lines { line = strings.TrimSpace(line) - if strings.HasPrefix(line, "Inter") || strings.HasPrefix(line, "face") || strings.HasPrefix(line, "lo:") { + parts := strings.SplitN(line, ":", 2) + if len(parts) != 2 { continue } - parts := strings.SplitN(line, ":", 2) - if len(parts) != 2 { + iface := strings.TrimSpace(parts[0]) + if !isPhysicalInterface(iface) { continue } @@ -937,6 +938,21 @@ func (c *Client) getSystemNetworkStats() (rxBytes, txBytes int64) { return rxBytes, txBytes } +var virtualInterfacePrefixes = []string{ + "lo", "docker", "veth", "br-", "virbr", "vnet", + "flannel", "cni", "calico", "tunl", "wg", + "tailscale", "tun", "tap", "dummy", +} + +func isPhysicalInterface(name string) bool { + for _, prefix := range virtualInterfacePrefixes { + if strings.HasPrefix(name, prefix) { + return false + } + } + return true +} + // AuthError 表示鉴权失败错误。 type AuthError struct { Message string