多网卡ip探测增加网卡创建时间字段上报
This commit is contained in:
@@ -27,6 +27,8 @@ public class NetworkInterfaceInfo {
|
|||||||
String status; // 与外网连通状态
|
String status; // 与外网连通状态
|
||||||
// 如果是子接口,存储父接口名称
|
// 如果是子接口,存储父接口名称
|
||||||
private String parentInterface;
|
private String parentInterface;
|
||||||
|
/** 网卡创建时间 */
|
||||||
|
private Long netCreateTime;
|
||||||
|
|
||||||
// 如果是父接口,存储子接口列表
|
// 如果是父接口,存储子接口列表
|
||||||
private List<NetworkInterfaceInfo> subInterfaces;
|
private List<NetworkInterfaceInfo> subInterfaces;
|
||||||
|
|||||||
@@ -142,7 +142,6 @@ public class NetworkInterfaceUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建网卡信息对象
|
// 创建网卡信息对象
|
||||||
NetworkInterfaceInfo info = NetworkInterfaceInfo.builder()
|
NetworkInterfaceInfo info = NetworkInterfaceInfo.builder()
|
||||||
.name(name)
|
.name(name)
|
||||||
@@ -187,6 +186,9 @@ public class NetworkInterfaceUtil {
|
|||||||
}
|
}
|
||||||
if(info.getIpv4() != null){
|
if(info.getIpv4() != null){
|
||||||
info.setStatus(getmacVlanStatus(info.getName())?"1":"0");
|
info.setStatus(getmacVlanStatus(info.getName())?"1":"0");
|
||||||
|
// 获取网卡创建时间戳
|
||||||
|
long createTime = getInterfaceCreateTime(name);
|
||||||
|
info.setNetCreateTime(createTime);
|
||||||
}
|
}
|
||||||
parent.getSubInterfaces().add(info);
|
parent.getSubInterfaces().add(info);
|
||||||
AssertLog.info(" 添加到父接口 {} 的子接口列表", parentName);
|
AssertLog.info(" 添加到父接口 {} 的子接口列表", parentName);
|
||||||
@@ -220,6 +222,9 @@ public class NetworkInterfaceUtil {
|
|||||||
}
|
}
|
||||||
if(child.getIpv4() != null){
|
if(child.getIpv4() != null){
|
||||||
child.setStatus(getmacVlanStatus(child.getName())?"1":"0");
|
child.setStatus(getmacVlanStatus(child.getName())?"1":"0");
|
||||||
|
// 获取网卡创建时间戳
|
||||||
|
long createTime = getInterfaceCreateTime(child.getName());
|
||||||
|
child.setNetCreateTime(createTime);
|
||||||
}
|
}
|
||||||
parent.getSubInterfaces().add(child);
|
parent.getSubInterfaces().add(child);
|
||||||
AssertLog.info("子接口 {} 关联到父接口 {}", child.getName(), parentName);
|
AssertLog.info("子接口 {} 关联到父接口 {}", child.getName(), parentName);
|
||||||
@@ -446,6 +451,32 @@ public class NetworkInterfaceUtil {
|
|||||||
return false; // 保守处理
|
return false; // 保守处理
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 获取网卡创建时间戳(单位:秒)
|
||||||
|
* 通过 stat 命令获取 /sys/class/net/<interface>/ 目录的创建时间
|
||||||
|
* 返回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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 内部类:网卡详情
|
* 内部类:网卡详情
|
||||||
|
|||||||
Reference in New Issue
Block a user