Что влияет на порядок IP-адресов «hostname -I»

На странице руководства имя хоста указано для параметра -I : ] «Не делайте предположений о порядке вывода.» .
В любом случае, наши серверы всегда возвращали внешний IP-адрес в первую очередь и IP-адрес локальной сети во вторую. К сожалению, большая часть устаревшего кода выполняется на этом предположении при использовании hostname -I | cut -d '' -f1 , чтобы получить внешний IP. За выходные что-то изменилось. Теперь внутренний IP-адрес отображается первым, а внешний - вторым. Спустя годы это новая ситуация, и мне интересно, что могло повлиять на это изменение.
Есть предположения?

Операционная система: Ubuntu 14.04.3 LTS
Ядро: Linux 4.4.110-x86_64-jb1

-1
задан 4 February 2019 в 14:32
1 ответ

Существует множество способов достижения одного и того же результата. Кроме использования /proc или "ip a" или "ss" существует способ извлечения данных с помощью SALT или любого другого инструмента управления.

Я не совсем уверен, как "имя хоста" подтягивает данные, но я могу, по крайней мере, дать вам другой способ проверить, что вам нужно.

Только для ipv4:

ip -4 a show dev eth0  | grep inet | cut -d " " -f6 | cut -d "/" -f1

В случае, если у вас есть вторичный IP на том же интерфейсе и вам нужен первичный:

ip -4 a show dev eth0:0  | grep inet | cut -d " " -f6 | cut -d "/" -f1

Только для ipv6:

ip -6 a show dev eth0  | grep inet | cut -d " " -f6 | cut -d "/" -f1

В случае, если вам понадобится маска подсети, вы игнорируете последнюю использованную мной команду "cut". Возможно, вы захотите заменить eth0 на реальный интерфейс, по крайней мере, эта информация не изменится.

0
ответ дан 5 December 2019 в 20:19

Теги

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