Код: Выделить всё
#!/bin/bash
# Проверяем, передан ли аргумент (имя интерфейса)
if [ -z "$1" ]; then
echo "Использование: $0 <имя_интерфейса>"
echo "Пример: $0 eth0"
exit 1
fi
INTERFACE=$1
# Проверяем существование самого интерфейса
if ! ip link show "$INTERFACE" > /dev/null 2>&1; then
echo "Ошибка: Интерфейс '$INTERFACE' не найден."
exit 1
fi
# Ищем IPv6 адрес (исключая link-local адрес fe80::, если нужно)
# Если вам нужен любой адрес, включая link-local, уберите 'scope global'
IPV6_ADDR=$(ip -6 addr show dev "$INTERFACE" scope global | grep inet6)
if [ -n "$IPV6_ADDR" ]; then
echo "На интерфейсе $INTERFACE найден IPv6 адрес."
# Вывод самих адресов для наглядности
ip -6 addr show dev "$INTERFACE" scope global | awk '/inet6/ {print $2}'
exit 0
else
echo "На интерфейсе $INTERFACE IPv6 адрес (global) не найден."
exit 1
fiКод: Выделить всё
chmod +x check_ipv6.shКод: Выделить всё
./check_ipv6.sh eth0ip -6 addr show dev "$INTERFACE": Эта команда запрашивает только IPv6 адреса для конкретного устройства.
scope global: Это важный флаг. Он фильтрует "внешние" адреса. Если его убрать, скрипт будет находить и fe80::... (link-local) адреса, которые есть почти всегда, даже если интернета по IPv6 нет.
grep inet6: Проверяет наличие строки с адресом.
Коды возврата: Скрипт возвращает exit 0, если адрес найден, и exit 1, если нет. Это удобно для использования в других скриптах или цепочках команд (например, || или &&).