我在 中的几个链中有许多规则iptables
。有什么可靠的方法可以准确计算每个表的所有规则数量?
iptables --list --line-numbers
打印如下内容:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 cali-INPUT all -- anywhere anywhere /* cali:Cz_u1IQiXIMmKD4c */
2 KUBE-FIREWALL all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 cali-FORWARD all -- anywhere anywhere /* cali:wUHhoiAYhphO9Mso */
2 DOCKER-ISOLATION all -- anywhere anywhere
3 DOCKER all -- anywhere anywhere
Chain KUBE-SERVICES (1 references)
num target prot opt source destination
1 REJECT tcp -- anywhere 10.17.6.000 /* ephemeral-1498158084 reject-with icmp-port-unreachable
….
获取输出的行数无法提供正确的规则数。有空行、标题和标题。正在寻找一种仅获取规则数的方法。
答案1
在你的 shell 中运行此命令:
iptables --list --line-numbers | sed '/^num\|^$\|^Chain/d' | wc -l
描述:
获取列表
iptables --list --行号
忽略以以下行开头的行數量或者链和白线
sed'/^num\|^$\|^Chain/d'
计算结果行数
厕所
答案2
你可以使用这个脚本。看起来它应该可以解决你的问题。
答案3
我会用:
iptables-save | grep --count --fixed-strings --regexp="-A"
这将转储 iptables 规则和 grep --count 规则条目。