Как получить адрес MA C в CentOS 7, используя терминал и не используя NI C? - PullRequest
0 голосов
/ 24 марта 2020

В одном из проектов клиент обновил свой сервер с 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();
}

1 Ответ

0 голосов
/ 24 марта 2020

Вы можете получить его с помощью этой команды

ip link

Или, может быть, это можно сделать, если вы знаете свой ip адрес .

...