こんにちは。リモートサーバーに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 ACCEPT || iptables -I 入力 -s 0/0 -p tcp --dport 5666 -j ACCEPT
答え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
。このルールを 5 番目 (1 番目ではなく) にする場合は、呼び出しを次のように変更します。
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")"