网上流传了一种方法:
iptables-save | uniq | iptables-store
但这种方法有个严重的问题:可以处理
-A OUTPUT -j abc
-A OUTPUT -j abc
-A OUTPUT -j abc
..
但是不能处理:
-A OUTPUT -j abcd
-A OUTPUT -j abc
-A OUTPUT -j abcd
-A OUTPUT -j abc
-A OUTPUT -j abcd
-A OUTPUT -j abc
..
有人提出用awk来处理:
iptables-save | awk '!x[$0]++' | iptables-store
但这个的问题在于可能误删COMMIT,或者其他类似的正常重复语句。
综上所述,以上上方法种种均不好使,试试这个吧!!!
记得是原创脚本哦,使用前先试用,有问题欢迎反馈。
iptables-save | awk '{if($1=="COMMIT"){delete x}}$1=="-A"?!x[$0]++:1' | iptables-store