Страница 1 из 1

Проверка существования v6 адреса на сетевом интерфейсе

Добавлено: 04 апр 2026, 04:37
ya
check_ipv6.sh

Код: Выделить всё

#!/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 eth0
Как это работает:
ip -6 addr show dev "$INTERFACE": Эта команда запрашивает только IPv6 адреса для конкретного устройства.

scope global: Это важный флаг. Он фильтрует "внешние" адреса. Если его убрать, скрипт будет находить и fe80::... (link-local) адреса, которые есть почти всегда, даже если интернета по IPv6 нет.

grep inet6: Проверяет наличие строки с адресом.

Коды возврата: Скрипт возвращает exit 0, если адрес найден, и exit 1, если нет. Это удобно для использования в других скриптах или цепочках команд (например, || или &&).

Re: Проверка существования v6 адреса на сетевом интерфейсе

Добавлено: 04 апр 2026, 04:58
ya
можно добавить в расписание

crontab -e

Код: Выделить всё

* * * * * /root/check_ipv6.sh br0 || ip -6 addr add fd10::9/64 dev br0 && ip -6 route replace default via fd10::156 dev br0

Re: Проверка существования v6 адреса на сетевом интерфейсе

Добавлено: 04 апр 2026, 09:49
ya
replace_route.sh

Код: Выделить всё

#!/bin/bash

ip addr flush dev enp4s0
ip addr flush dev enp2s0

ip route del default via 192.168.43.13 dev virbr6
ip route replace default via 192.168.43.13 dev virbr6

exit 0
очистит v6 адреса на сетевом интерфейсе eth1

Код: Выделить всё

ip -6 addr flush dev eth1