web-dev-qa-db-ja.com

ルールがまだ存在しない場合は、iptablesルールを作成します

こんにちは私はリモートサーバーで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
3
bpal

あなたはただ変える必要があります

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番目にする必要がある場合は、呼び出しを次のように変更します。

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")"
1
Hauke Laging