Переход с iptables на nftables в режиме моста

Делать это с помощью цикла оболочки неудобно и подвержено ошибкам. Если ваш файл drinks.txtсодержит *в отдельной строке (или в окружении пробелов ), он будет расширяться, например, до имен файлов в текущем каталоге.

Вместо этого просто используйтеgrep:

grep -iF 'co' drinks.txt

Здесь мы используем grepс -iдля выполнения -нечувствительного к регистру совпадения. Параметр -Fозначает, что grepдолжен использовать шаблон как строку , а не как регулярное выражение (здесь это не имеет значения, но будет иметь значение, если ваш шаблон содержал такие символы, как *или .или другие специальные символы регулярного выражения ).

Команда вернет каждую полную строку, содержащую строку co, Co, cOили CO.

Как часть скрипта:

#!/bin/sh

grep -iF -e "$1" drinks.txt

Здесь я использую -e, чтобы сказать, что «следующий аргумент — это шаблон». Если бы я этого не сделал и $1начинался с тире, это было бы воспринято как вариант grep.

Чтобы принудительно найти совпадение в начале слова, вы должны использовать

grep -i -e '\b'"$1" drinks.txt

или

grep -i -e '\<'"$1" drinks.txt

Где \bи \<оба будут совпадать на границе слова. Обратите внимание, что здесь нам пришлось удалить параметр -F, потому что наш шаблон теперь является регулярным выражением. Это также означает, что любые символы регулярных выражений в $1будут специальными.

0
11.04.2021, 04:06
1 ответ

Кто-то на другом форуме указал мне на эту очень полезную диаграмму потока пакетов nftables:

packet flow diagram

Это очень помогло мне упорядочить свое мышление. Я еще не доработал правила, но я думаю, что правила для пакетов, которые пересекают мост между интерфейсами-членами, будут проходить в цепочке пересылки в семействе мостов, а затем правила для пакетов от интерфейса моста к локальному хосту. во входной цепочке в семействе inet, а правила для пакетов между мостами будут идти в цепочке пересылки в семействе inet.

1
14.10.2021, 10:10

Теги

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