有没有办法使用正则表达式并获取IP地址列表?在我的例子中,系统中为每个设备接口定义了带数字的别名,我需要使用别名来获取列表。对于测试系统,所有别名都可以映射到同一设备,而在生产中则不同。
例如,我可以将traffic1,traffic2,traffic3等映射到eth0,eth1 ......等等。所有trafficX都可以在测试中映射到eth0。
有没有办法通过传递流量*或类似的东西来获取所有IP地址的列表?
答案 0 :(得分:-1)
此方法读取/ etc / hosts并搜索模式:
private static InetAddress[] listIPs(String re) throws IOException {
Pattern pat = Pattern.compile(re);
try (InputStream stream = new FileInputStream("/etc/hosts");
Reader reader = new InputStreamReader(stream, "UTF-8");
BufferedReader in = new BufferedReader(reader)) {
Set<InetAddress> result = new HashSet<>();
String line = in.readLine();
while (line != null) {
String[] fields = line.split("\\s+");
boolean found = false;
for (int i = 1; !found && i < fields.length; ++i) {
found = pat.matcher(fields[i]).matches();
}
if (found) {
result.add(InetAddress.getByName(fields[0]));
}
line = in.readLine();
}
return result.toArray(new InetAddress[result.size()]);
}
}
在您的示例中,您可以传递"traffic[0-9]+"
。