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;