Is there a way to use regular expressions and get a list of IP address? In my case, there are aliases defined with numbers in the system for each device interface and I need to fetch the list using aliases. For test systems, all aliases could map to the same device whereas in production it would differ.
For eg., I can have traffic1, traffic2, traffic3, etc., mapped to eth0, eth1.. so on in production. Where as all trafficX could be mapped to eth0 in tests.
Is there a way get the list of all IP address by passing traffic* or something like that?
This method reads the /etc/hosts and search a pattern:
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()]);
}
}
In your example, you could pass "traffic[0-9]+"
for instance.