Crie uma regra iptables se a regra ainda não existir

Crie uma regra iptables se a regra ainda não existir

Olá, criei um script para configurar o Nagios em meus servidores remotos. Meu script verifica o iptables para ver se já existe uma regra de firewall e então ésupostopara adicionar a regra se ela ainda não estiver lá.

No momento, o script apenas ecoa a regra, mas na verdade não é capaz de escrevê-lo. Qualquer ajuda seria muito apreciada.

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

Responder1

verifique se existem regras e se não - adicione-as

iptables -C INPUT -s 0/0 -p tcp --dport 5666 -j ACEITAR || iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACEITAR

Responder2

Você apenas tem que mudar

echo "iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT"

para

iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT

Você pode deixar de -s 0/0fora:

iptables -I INPUT -p tcp --dport 5666 -j ACCEPT

E faria sentido considerar qual é a melhor posição dentro de INPUT. Se esta regra for a quinta (em vez da primeira), altere a chamada para:

iptables -I 5 INPUT -p tcp --dport 5666 -j ACCEPT

E

"cat /etc/sysconfig/iptables | grep -- "5666""

contém um erro. O comando

cat /etc/sysconfig/iptables | grep -- "5666"

não é executado. Você deve adicionar substituição de comando:

"$(cat /etc/sysconfig/iptables | grep -- "5666")"

informação relacionada