Open1
ufwの特定の文字列を含むルールを一括削除する方法
探しても意外と見つからないので考えてみた
もっといい方法ご存知の方教えてください
for i in $(sudo ufw status | grep "Anywhere" | grep -oP "\b\d{1,4}(\.|:).+(?=/tcp)"
); do sudo ufw --force delete allow from $i proto tcp; done
一応解説すると
sudo ufw status | grep "Anywhere"
ufw statusの結果からAnywhereを含む行を抽出し、
| grep -oP "\b\d{1,4}(\.|:).+(?=/tcp)"
Perl構文の正規表現で
\b 単語の境界が
\d 数値を {1,4}1回以上4回以下繰り返し (.|:) . または : .+ 任意の文字を1回以上繰り返し (?=/tcp)直後の文字列が/tcp(ただし/tcpは含まない)