안녕하세요. 저는 원격 서버에 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 INPUT -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")"