Есть ли другое место для хоста / имя машины?

У меня есть клонированная машина VirtualBox, которую я попросил очистить MAC-адрес после клонирования. Имя машины было изменено с "node01" на "new-host-7.home", и я изменил на "node02" с помощью обычных методов (имя хоста, изменение в традиционных файлах и т. Д.). Кажется, что все меняется, пока моя Java-программа не получит имя старого компьютера ...

Мой файл / etc / hosts:

127.0.0.1       node02.home     node02  localhost
192.168.25.25   node01.home     node01
192.168.25.27   node03.home     node03

Мой файл / etc / hostname:

node02

Моя подсказка:

root@node02:/

Но когда я Запустите Java-программу, которая запрашивает имя машины, я получаю старое имя машины:

new-host-7.home

Вот как я получил это имя:

InetAddress ip = getFirstNonLoopbackAddress(true, false);
this.machineName = ip.getCanonicalHostName();

Метод:

private InetAddress getFirstNonLoopbackAddress(boolean preferIpv4, boolean preferIPv6) throws SocketException {
    Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
    while (en.hasMoreElements()) {
        NetworkInterface i = en.nextElement();
        for (Enumeration<InetAddress> en2 = i.getInetAddresses(); en2.hasMoreElements();) {
            InetAddress addr = en2.nextElement();
            if (!addr.isLoopbackAddress()) {
                if (addr instanceof Inet4Address) {
                    if (preferIPv6) {
                        continue;
                    }
                    return addr;
                }
                if (addr instanceof Inet6Address) {
                    if (preferIpv4) {
                        continue;
                    }
                    return addr;
                }
            }
        }
    }
    return null;
} 

Я не знаю, является ли AskUbuntu лучшим местом для этого вопроса или StackOverflow.

TIA.

РЕДАКТИРОВАТЬ:

ip -o a

1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
2: enp0s3    inet 192.168.25.26/24 brd 192.168.25.255 scope global enp0s3\       valid_lft forever preferred_lft forever

getent hosts

127.0.0.1       node02.home node02 localhost
192.168.25.25   node01.home node01
192.168.25.27   node03.home node03
127.0.0.1       localhost ip6-localhost ip6-loopback
-1
задан 18 April 2016 в 19:52

1 ответ

На основе обновлений исходного вопроса вы можете видеть, что IP-команда возвращает 192.168.25.26 в качестве используемого IP-адреса, но вы еще не определили имя хоста для этого IP-адреса.

/etc/hosts требуется следующая запись:

192.168.25.26 node02.home

После перезапуска вы увидите DNS при обновлении вашей сети, и ваш код Java вернет правильное имя хоста.

0
ответ дан 18 April 2016 в 19:52

Другие вопросы по тегам:

Похожие вопросы: