5

Какую команду я могу использовать для получения IPv6-адреса интерфейса в скрипте?

Обновление: вывод sed из одного из ответов.

$ ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fe80::224:d7ff:fed0:4f5c/64 scope link 
       valid_lft forever preferred_lft forever

Другой:

$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'
$ ip addr show dev eth0
  2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
  link/ether f0:de:f1:7b:e9:6c brd ff:ff:ff:ff:ff:ff

3 ответа3

12

Есть много способов сделать это.

Вот один из них:

ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

Это похоже на ответ Роберта, за исключением того, что он удаляет только адрес.

9

Вы можете использовать:

ip -6 addr

Он вернет все IPv6-адреса, которые вы настроили.

0

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

Мое решение, показанное ниже, не ориентировано на имя интерфейса: оно извлекает найденный глобальный IPv6- адрес индивидуальной рассылки независимо от того , какой интерфейс вызывается. Если IF может быть проводным или беспроводным, и мое выражение лица будет работать. Просто установите его как переменную в вашем скрипте, и Боб станет вашим дядей:

IPV6GLOBALUNICAST="$(ip -6 addr|awk '{print $2}'|grep -P '^(?!fe80)[[:alnum:]]{4}:.*/64'|cut -d '/' -f1)"

Просто вставьте следующее в cli, чтобы убедиться, что он выполняет то, что говорит на жестяной банке, и "просто работает", прежде чем вставлять его в свои сценарии:

ip -6 addr|awk '{print $2}'|grep -P '^(?!fe80)[[:alnum:]]{4}:.*/64'|cut -d '/' -f1

Я пользуюсь этим с большим успехом и не потерпел неудачу ни при каких обстоятельствах на сегодняшний день. HTH- Терренс Хоулахан

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .