【发布时间】:2019-07-19 23:08:24
【问题描述】:
目标是修改 iptables 文件中的一些连续规则,并在 bash 数组中收集一些新规则(如果需要,可以将其保存到临时文件中)。
rules.v4中要修改的规则:
-A ufw-user-input -s <ip_address_1>/<mask_1> -j ufw-logging-input
-A ufw-user-input -s <ip_address_2>/<mask_2> -j ufw-logging-input
-A ufw-user-input -s <ip_address_3>/<mask_3> -j ufw-logging-input
这些行可以匹配:-A ufw-user-input -s [0-9./]+ -j ufw-logging-input 或者可以在数组iptables_ipv4_user_input_rules[@] 中使用
它们必须在 iptables 文件 rules.v4 中全部替换为另一个数组的内容,该数组包含一组不同的可变数量规则:online_ipv4_user_input_rules[@] 或来自包含相同行的文件:
-A ufw-user-input -s <ip_address_4>/<mask_4> -j ufw-logging-input
-A ufw-user-input -s <ip_address_5>/<mask_5> -j ufw-logging-input
-A ufw-user-input -s <ip_address_6>/<mask_6> -j ufw-logging-input
-A ufw-user-input -s <ip_address_7>/<mask_7> -j ufw-logging-input
我不知道如何使用 sed 或 awk 来实现。
要修改的规则行数不定,行号不定,所以下面的帖子在这里不适用:
【问题讨论】:
-
online_ipv4_user_input_rules[@]的内容是什么,你想如何将文件rules.v4的内容与数组online_ipv4_user_input_rules[@]的内容匹配? -
online_ipv4_user_input_rules[@] 只是另一组不同的规则:-A ufw-user-input -s aaaa/27 -j ufw-logging-input -A ufw-user-input -s bbbb/ 28 -j ufw-logging-input -A ufw-user-input -s cccc/29 -j ufw-logging-input
-
a.a.a.a和x.x.x.x之间有什么关系吗?如果是,请更新您的问题。如果没有,为什么不直接打印数组的内容? -
没有。这是无关紧要的。它们的内容和规则/行数会随着时间而变化。