IPv6-подсети с systemd-networkd

Если вам нужен результат grep, вы не можете использовать флаг -c, как указано в другом ответе. Что вы можете сделать, так это запустить дважды, один раз с флагом -c, чтобы получить количество совпадений, и один раз без флага -c, чтобы увидеть совпадения. Однако это может быть очень неэффективно, в зависимости от размера вашего входного файла.

Вы можете сделать что-то вроде этого:

Содержимое ввода :

The first line is foo
I have a drink at the bar
The third line is foo again

Содержимое скрипта :

#!/usr/bin/env bash

countMatches(){
    echo Searching for "${1}"
    result=$(grep "${1}" input)
    if [ $? -eq 1 ]; then
        echo No match found
        echo
        exit 1
    fi

    if [ $(echo "${result}" | wc -l) -eq 1 ]; then
        echo 1 match found:
        echo "${result}"
        echo
    else
        echo 2 matches found:
        echo "${result}"
        echo
    fi
}

countMatches foo
countMatches bar
countMatches baz

А вот вывод при вызове скрипта :

Searching for foo
2 matches found:
The first line is foo
The third line is foo again

Searching for bar
1 match found:
I have a drink at the bar

Searching for baz
No match found
0
05.12.2018, 13:10
1 ответ

Последние несколько дней я разрабатывал аналогичную конфигурацию.

На момент написания этой статьи в systemd -networkd была ошибка, из-за которой он не помещал делегированный адрес префикса -в интерфейс, раздающий префиксы. Однако интерфейс выдает префиксы устройствам в сетевом сегменте.

IPv6-адрес вашего внешнего интерфейса не соответствует префиксу из-за конфигурации сети вашего интернет-провайдера. Мой интернет-провайдер выдает два разных блока адресов DHCPv6, один из них совпадает с префиксом, указанным для делегирования, а другой — нет. Он изменяется случайным образом по истечении срока аренды DHCPv6.

Конфигурация, которую я использовал, взята из Archlinux Wiki Сначала вы настраиваете свой «внешний» интерфейс (, который подключен к Fritz!box )

.
/etc/systemd/network/EXTERNAL.network
[Match]
...
[Network]
DHCP=yes
IPForward=yes
IPv6AcceptRA=yes
IPv6DuplicateAddressDetection=1
IPv6PrivacyExtensions=kernel

Код, который у вас уже есть для eth1, выглядит правильно (при условии, что eth1 является вашим внешним интерфейсом ). В моей конфигурации я включил клиенты DHCPv4 и DHCPv6 на своем интерфейсе.

Теперь ваш внутренний интерфейс должен быть настроен так:

/etc/systemd/network/INTERNAL.network
[Match]
...
[Network]
IPv6PrefixDelegation=dhcpv6
IPv6DuplicateAddressDetection=1
IPv6PrivacyExtensions=no
LinkLocalAddressing=ipv6

[IPv6PrefixDelegation]
RouterLifetimeSec=3600

Параметр RouterLifetimeSecважен, потому что он настраивает интерфейс для выдачи префиксов, которые он получает от интерфейса DHCPv6.

1
28.08.2020, 00:38

Теги

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