У меня клонированная машина 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 лучшим местом для этого вопроса или Переполнение стека.
TIA.
EDIT:
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