Hallo, ich habe ein Skript erstellt, um Nagios auf meinen Remote-Servern einzurichten. Mein Skript überprüft iptables, um festzustellen, ob bereits eine Firewall-Regel vorhanden ist, und ist dannangeblichum die Regel hinzuzufügen, falls sie noch nicht vorhanden ist.
Momentan gibt das Skript die Regel nur wieder, kann sie aber nicht schreiben. Für jede Hilfe wäre ich sehr dankbar.
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
Antwort1
Überprüfen Sie, ob Regeln vorhanden sind, und fügen Sie sie ggf. hinzu.
iptables -C INPUT -s 0/0 -p tcp --dport 5666 -j AKZEPTIEREN || iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j AKZEPTIEREN
Antwort2
Man muss sich nur ändern
echo "iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT"
Zu
iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j ACCEPT
Folgendes kannst du -s 0/0
weglassen:
iptables -I INPUT -p tcp --dport 5666 -j ACCEPT
Und es wäre sinnvoll, zu überlegen, was die beste Position innerhalb ist INPUT
. Wenn diese Regel die fünfte (statt die erste) sein soll, dann ändere den Aufruf wie folgt:
iptables -I 5 INPUT -p tcp --dport 5666 -j ACCEPT
Und
"cat /etc/sysconfig/iptables | grep -- "5666""
enthält einen Fehler. Der Befehl
cat /etc/sysconfig/iptables | grep -- "5666"
wird nicht ausgeführt. Sie müssen eine Befehlsersetzung hinzufügen:
"$(cat /etc/sysconfig/iptables | grep -- "5666")"