多网IP探测优化
This commit is contained in:
@@ -4,6 +4,7 @@ import cn.hutool.json.JSONObject;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.tongran.agent.client.core.config.GlobalConfig;
|
||||
import com.tongran.agent.client.core.vo.NetworkInterfaceInfo;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.snmp4j.smi.OID;
|
||||
import oshi.hardware.NetworkIF;
|
||||
|
||||
@@ -262,14 +263,13 @@ public class AgentUtil {
|
||||
public static List<NetworkInterfaceInfo> collectNetworkInfo() throws Exception {
|
||||
List<NetworkInterfaceInfo> result = new ArrayList<>();
|
||||
// String publicIp = getPublicIp(); // 获取公网 IP(全局出口)
|
||||
String ipInfo = PublicIpFetcher.getPublicIp();
|
||||
// System.out.println("完整信息: " + ipInfo);
|
||||
String publicIp = PublicIpFetcher.extractIp(ipInfo);
|
||||
if (publicIp != null) {
|
||||
System.out.println("公网 IP: " + publicIp);
|
||||
} else {
|
||||
System.out.println("未能提取 IP 地址");
|
||||
}
|
||||
// String ipInfo = PublicIpFetcher.getPublicIp();
|
||||
// String publicIp = PublicIpFetcher.extractIp(ipInfo);
|
||||
// if (publicIp != null) {
|
||||
// System.out.println("公网 IP: " + publicIp);
|
||||
// } else {
|
||||
// System.out.println("未能提取 IP 地址");
|
||||
// }
|
||||
|
||||
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
|
||||
|
||||
@@ -286,15 +286,35 @@ public class AgentUtil {
|
||||
// 检查是否“已连接”(物理链路状态)
|
||||
if (!isInterfaceConnected(name)) continue;
|
||||
|
||||
String ipv4 = getIPv4Address(ni);
|
||||
// 检查IP4信息
|
||||
if (getIPv4Address(ni).equals("N/A")) continue;
|
||||
if (ipv4.equals("N/A")) continue;
|
||||
|
||||
String gateway = getGatewayAddress();
|
||||
// 检查IP4信息
|
||||
if (gateway.equals("N/A")) continue;
|
||||
|
||||
// 添加临时路由
|
||||
addTempRoute(ipv4, name, gateway);
|
||||
String ipInfo = PublicIpFetcher.getPublicIp();
|
||||
String publicIp = PublicIpFetcher.extractIp(ipInfo);
|
||||
if (publicIp != null) {
|
||||
System.out.println("公网 IP: " + publicIp);
|
||||
} else {
|
||||
System.out.println("未能提取 IP 地址");
|
||||
}
|
||||
if (StringUtils.isBlank(publicIp)) continue;
|
||||
|
||||
// 删除临时路由
|
||||
delTempRoute(ipv4, name, gateway);
|
||||
|
||||
|
||||
NetworkInterfaceInfo info = NetworkInterfaceInfo.builder()
|
||||
.name(name)
|
||||
.type("Ethernet")
|
||||
.mac(getMacAddress(ni))
|
||||
.ipv4(getIPv4Address(ni))
|
||||
.gateway(getGatewayAddress()) // 网关通常是默认路由,全局一致
|
||||
.ipv4(ipv4)
|
||||
.gateway(gateway) // 网关通常是默认路由,全局一致
|
||||
.publicIp(publicIp)
|
||||
.build();
|
||||
|
||||
@@ -336,6 +356,36 @@ public class AgentUtil {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加临时路由
|
||||
*/
|
||||
private static boolean addTempRoute(String ipv4, String name, String gateway) {
|
||||
String prefix = "32";
|
||||
AssertLog.info("添加临时路由,ipv4:{}",ipv4);
|
||||
boolean flag = NetworkUtil.addRoute(ipv4,prefix,gateway,name);
|
||||
if(flag){
|
||||
AssertLog.info("添加临时路由成功,ipv4:{}",ipv4);
|
||||
}else{
|
||||
AssertLog.info("添加临时路由成功失败,ipv4:{}",ipv4);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除临时路由
|
||||
*/
|
||||
private static boolean delTempRoute(String ipv4, String name, String gateway) {
|
||||
String prefix = "32";
|
||||
AssertLog.info("删除临时路由,ipv4:{}",ipv4);
|
||||
boolean flag = NetworkUtil.addRoute(ipv4,prefix,gateway,name);
|
||||
if(flag){
|
||||
AssertLog.info("删除临时路由成功,ipv4:{}",ipv4);
|
||||
}else{
|
||||
AssertLog.info("删除临时路由成功失败,ipv4:{}",ipv4);
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否为 Ethernet 类型网卡(基于常见命名)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user