Управление правилами фаерволла на основании комментариев

У меня есть Telegram-бот, с помощью которого можно управлять роутером (включать-отключать определённые правила, перезагружать роутер и т.п.). Включение или отключение правил фаерволла обычно организовывают так:

/ip firewall nat enable numbers=2
/ip firewall nat enable numbers=3

Но правила удаляются, добавляются, меняются местами. Поэтому, при изменении наборов правил, нужно править скрипты (номер правила по порядку в них), которые использует бот, что не есть очень удобно.

Решение — использовать комментарии к правилам и регулярные выражения.

/ip firewall nat enable [find comment~"\\bSTRING1\\b.*\\bSTRING2\\b"]
/ip firewall nat disable [find comment~"\\bSTRING1\\b.*\\bSTRING3\\b"]
/ip firewall nat disable [find comment~"\\bSTRING1\\b.*\\bSTRING4\\b"]

В приведённом фрагменте, скрипт ищет правило со строками STRING1 и STRING2 в комментарии и включает его, и выключает правила с комментариями, содержащими строки STRING1 и STRING3 и STRING1 и STRING4.
Используя тильду — «~» — мы даём знать RouterOS, что после неё начинается регулярное выражение.
Обратите внимание, что в скрипте бекслеши нужно экранировать, поэтому они в коде скрипта удвоены.

Оставьте комментарий