В одном из проектов клиент обновил свой сервер с CentOS6 до CentOS7. В CentOS 6 мы использовали для получения адреса MA C из команды «ifconfig -a» и извлечения адреса MA C с помощью регулярных выражений (. HWaddr. : (. *)). Теперь в CentOS 7 ifconfig не работает. Мы используем java и предложили использовать приведенный ниже код, который работает нормально, но мы должны предоставить решение, используя только команду и не используя Java API:
String getLocalServerMAC(){
String macAddress = null;
String macAddressToBeValidated = null;
try {
Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface networkInterface : Collections.list(networkInterfaces)) {
if (networkInterface != null && networkInterface.isUp()) {
macAddressToBeValidated = getNotValidatedMACAddress(networkInterface);
if (macAddressToBeValidated != null && !macAddressToBeValidated.isEmpty()) {
macAddress = macAddressToBeValidated; break;
}
}
}
}catch (SocketException|RuntimeException e) {
LOGGER.error(e.getMessage(), e);
}
return macAddress;
}
private static String getNotValidatedMACAddress(NetworkInterface networkInterface) throws SocketException {
StringBuilder macAddressToBeValidated = new StringBuilder();
byte[] macAddressAsStream = networkInterface.getHardwareAddress();
if(macAddressAsStream != null) {
for (int i = 0; i < macAddressAsStream.length; i++){
macAddressToBeValidated.append(String.format("%02X%s", macAddressAsStream[i], (i < macAddressAsStream.length - 1) ? "-" : ""));
}
}
return macAddressToBeValidated.toString();
}