![如果规则尚不存在,则创建 iptables 规则](https://linux22.com/image/36216/%E5%A6%82%E6%9E%9C%E8%A7%84%E5%88%99%E5%B0%9A%E4%B8%8D%E5%AD%98%E5%9C%A8%EF%BC%8C%E5%88%99%E5%88%9B%E5%BB%BA%20iptables%20%E8%A7%84%E5%88%99.png)
您好,我创建了一个脚本来在我的远程服务器上设置 Nagios。我的脚本检查 iptables 以查看防火墙规则是否已存在,然后是应该添加规则(如果尚不存在)。
现在,脚本只是回显了规则,但实际上无法编写它,任何帮助将不胜感激。
ssh -t -t root@$serverName << EOF
service nrpe restart
chkconfig nrpe on
if [ "cat /etc/sysconfig/iptables | grep -- "5666"" != "-A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT" ] ; then echo "iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT" ; fi
service iptables save
exit
EOF
答案1
检查规则是否存在,如果不存在,则添加它
iptables -C 输入 -s 0/0 -p tcp --dport 5666 -j 接受 || iptables -I 输入 -s 0/0 -p tcp --dport 5666 -j 接受
答案2
你只需要改变
echo "iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT"
到
iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT
您可以省略-s 0/0
:
iptables -I INPUT -p tcp --dport 5666 -j ACCEPT
考虑什么是 内的最佳位置是有意义的INPUT
。如果此规则应该是第五条(而不是第一条),则将调用更改为:
iptables -I 5 INPUT -p tcp --dport 5666 -j ACCEPT
和
"cat /etc/sysconfig/iptables | grep -- "5666""
包含错误。命令
cat /etc/sysconfig/iptables | grep -- "5666"
没有被执行。您必须添加命令替换:
"$(cat /etc/sysconfig/iptables | grep -- "5666")"