Привет, я создал скрипт для настройки 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")"