From b4155ea9c839952963fa468d9922869bedb13779 Mon Sep 17 00:00:00 2001 From: gaoyutao Date: Fri, 9 Jan 2026 19:18:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96agent=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E7=AB=AF=E7=BD=91=E5=85=B3=E6=8E=A2=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tongran/agent/client/utils/AgentUtil.java | 32 ++++++++++++++++++- .../client/utils/NetworkInterfaceUtil.java | 15 ++++++--- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tongran/agent/client/utils/AgentUtil.java b/src/main/java/com/tongran/agent/client/utils/AgentUtil.java index ca14971..0f78350 100644 --- a/src/main/java/com/tongran/agent/client/utils/AgentUtil.java +++ b/src/main/java/com/tongran/agent/client/utils/AgentUtil.java @@ -608,7 +608,7 @@ public class AgentUtil { /** * 获取默认网关(调用 shell 命令) */ - private static String getGatewayAddress() { + public static String getGatewayAddress() { try { Process process = Runtime.getRuntime().exec("ip route"); java.util.Scanner scanner = new java.util.Scanner(process.getInputStream()); @@ -625,6 +625,36 @@ public class AgentUtil { } return "N/A"; } + /** + * 获取默认网关(调用 shell 命令) + */ + public static String getGatewayAddress(String interfaceName) { + try { + Process process = Runtime.getRuntime().exec("ip route"); + java.util.Scanner scanner = new java.util.Scanner(process.getInputStream()); + while (scanner.hasNextLine()) { + String line = scanner.nextLine(); + if (line.startsWith("default")) { + String[] parts = line.split(" "); + if (parts.length >= 5 && "via".equals(parts[1])) { + // 基本格式检查通过 + for (int i = 0; i < parts.length; i++) { + if ("dev".equals(parts[i]) && i + 1 < parts.length) { + if (interfaceName.equals(parts[i + 1])) { + return parts[2]; // gateway地址 + } + break; + } + } + } + } + } + scanner.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } public static String getGateway(String interfaceName, String target) { try { Process process = Runtime.getRuntime().exec( diff --git a/src/main/java/com/tongran/agent/client/utils/NetworkInterfaceUtil.java b/src/main/java/com/tongran/agent/client/utils/NetworkInterfaceUtil.java index 7f65f73..06288d5 100644 --- a/src/main/java/com/tongran/agent/client/utils/NetworkInterfaceUtil.java +++ b/src/main/java/com/tongran/agent/client/utils/NetworkInterfaceUtil.java @@ -93,12 +93,17 @@ public class NetworkInterfaceUtil { // 获取网关 String gateway = AgentUtil.getGateway(name, "www.baidu.com"); - AssertLog.info(" 网关: {}", gateway); - - if ("N/A".equals(gateway)) { - AssertLog.info(" 跳过网卡 {}: 无法获取网关", name); - continue; + if(gateway == null) { + // 降级 + gateway = AgentUtil.getGatewayAddress(name); + AssertLog.info("traceroute探测失败,改为ip route方式获取"); } + AssertLog.info("获取到网关为: {}", gateway); + +// if ("N/A".equals(gateway)) { +// AssertLog.info(" 跳过网卡 {}: 无法获取网关", name); +// continue; +// } boolean flag = false; if(!"N/A".equals(ipv4) && gateway != null){ flag = true;