diff --git a/src/main/java/com/tongran/agent/client/core/vo/NetworkInterfaceInfo.java b/src/main/java/com/tongran/agent/client/core/vo/NetworkInterfaceInfo.java index 5781b79..08d2d81 100644 --- a/src/main/java/com/tongran/agent/client/core/vo/NetworkInterfaceInfo.java +++ b/src/main/java/com/tongran/agent/client/core/vo/NetworkInterfaceInfo.java @@ -27,6 +27,8 @@ public class NetworkInterfaceInfo { String status; // 与外网连通状态 // 如果是子接口,存储父接口名称 private String parentInterface; + /** 网卡创建时间 */ + private Long netCreateTime; // 如果是父接口,存储子接口列表 private List subInterfaces; 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 06288d5..3969343 100644 --- a/src/main/java/com/tongran/agent/client/utils/NetworkInterfaceUtil.java +++ b/src/main/java/com/tongran/agent/client/utils/NetworkInterfaceUtil.java @@ -142,7 +142,6 @@ public class NetworkInterfaceUtil { } } } - // 创建网卡信息对象 NetworkInterfaceInfo info = NetworkInterfaceInfo.builder() .name(name) @@ -187,6 +186,9 @@ public class NetworkInterfaceUtil { } if(info.getIpv4() != null){ info.setStatus(getmacVlanStatus(info.getName())?"1":"0"); + // 获取网卡创建时间戳 + long createTime = getInterfaceCreateTime(name); + info.setNetCreateTime(createTime); } parent.getSubInterfaces().add(info); AssertLog.info(" 添加到父接口 {} 的子接口列表", parentName); @@ -220,6 +222,9 @@ public class NetworkInterfaceUtil { } if(child.getIpv4() != null){ child.setStatus(getmacVlanStatus(child.getName())?"1":"0"); + // 获取网卡创建时间戳 + long createTime = getInterfaceCreateTime(child.getName()); + child.setNetCreateTime(createTime); } parent.getSubInterfaces().add(child); AssertLog.info("子接口 {} 关联到父接口 {}", child.getName(), parentName); @@ -446,6 +451,32 @@ public class NetworkInterfaceUtil { return false; // 保守处理 } } + /** + * 获取网卡创建时间戳(单位:秒) + * 通过 stat 命令获取 /sys/class/net// 目录的创建时间 + * 返回Unix时间戳,失败返回-1 + */ + public static long getInterfaceCreateTime(String interfaceName) { + try { + ProcessBuilder pb = new ProcessBuilder("stat", "-c", "%Y", "/sys/class/net/" + interfaceName); + Process process = pb.start(); + + BufferedReader reader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + String output = reader.readLine(); + reader.close(); + + int exitCode = process.waitFor(); + + if (exitCode == 0 && output != null && !output.trim().isEmpty()) { + return Long.parseLong(output.trim()); + } + return -1; + } catch (Exception e) { + AssertLog.error("获取网卡 {} 创建时间失败: {}", interfaceName, e.getMessage()); + return -1; + } + } /** * 内部类:网卡详情