Firewalld показывает расширенные правила без зоны

Поскольку вам нужны перекрывающиеся строки, боюсь, ни один инструмент не может обеспечить это по умолчанию. Необходимо перебрать вход, чтобы найти все перекрывающиеся вхождения. Следующая проблема — жадный характер регулярных выражений :. Вы не найдете опережающего ATCGTA, если можно найти ATCGTAGCTA. Это усложняет выполнение цикла :

.
sed -E ':1
 h;s/(.*TA).*/\1/
 s/.{0,20}TA$/_&/
 s/.*_//p
 g;s/(.*)TA.*/\1/;t1
 d

— первое решение, которое пришло мне в голову. Вывод для примера должен содержать все нужные вам последовательности:

GATGCTGCTATGCTAGATGCTA
TCGTATCGATGCTGCTATGCTA
TAGCATCGTATCGATGCTGCTA
ATCGTAGCTAGCATCGTA
ATCGTAGCTA
ATCGTA

Объяснение :Кажется, проще начать с последнего совпадения, поэтому

  • hсохранить буфер в резервной области для следующего цикла
  • s/(.*TA).*/\1/удаляет все после последнегоTA
  • s/.{0,20}TA$/_&/ставит подчеркивание в качестве маркера в начале последовательности, которую вы хотите получить
  • s/.*_//pудаляет все до маркера и печатает последовательность
  • Чтобы подготовиться к следующему циклу, gвосстанавливает сохраненный шаблон, а s/(.*)TA.*/\1/удаляет последний TAи последующие, чтобы его больше нельзя было найти
  • наконец, t1начинается с :1, в то время как последовательность была найдена.
  • dподавляет ложный вывод в конце
0
27.10.2021, 09:55
1 ответ

Это работает в Debian Bullseye (11)

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="204.4.3.4" destination address="172.18.30.0/24" port port="80" protocol="tcp" accept'

firewall-cmd --reload

Добавление флага permanentприводит к тому, что он нацеливается на не -временный брандмауэр (, правила для которого перечислены ), а также сохраняются, а затем firewall-cmd --list-rich rulesпокажет его.

Выход:

rule family="ipv4" source address="204.4.3.4" destination address="172.18.30.0/24" port port="80" protocol="tcp" accept

На самом деле команда добавляет его в зону по умолчанию, но вы никогда не говорили, что это не то, что вы хотели. Без флага --permanentничего относительно правила не появляется ни в одной из команд firewall-cmd --list-<attribute>или где-либо в /etc/firewalld. Единственная причина, которую я могу придумать для этого, заключается в том, что это эфемерно.

0
27.10.2021, 11:39

Теги

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