2014-04-10 17 views
5

Ich habe das folgende Bash-Skript, um Protokolle zu lesen und auf Brute-Force zu prüfen, dann blockieren Sie verletzende IP mit iptables.Bash-Skript-Befehle funktionieren nicht in Cron

#!/bin/bash 
#blah blah run some commands to get the IP 
iptables -A INPUT -s $p -j REJECT --reject-with icmp-host-prohibited 
echo "BANNED $p FOR $COUNT ATTEMPTS" |wall 

Ich habe chmod 755. Wenn ich den Befehl vom Terminal ausführen, funktioniert es gut. Aber wenn ich einen Cronjob unter Verwendung crontab -e als root einstelle, erhält es die IP und echos die "BANNED ..." Nachricht zur Wand aber nichts wird der iptables Liste hinzugefügt.

PS. Ich habe sowohl #!/bin/bash als auch #!/bin/sh ausprobiert, aber kein Glück.

+0

warum Sie iptables-Regeln in cron hinzufügen müssen tun, um, wenn Sie iptables hinzufügen möchten rulesand Sie sie hartnäckig sein wollen Sie sie hinzufügen können nach/etc/sysconfig/iptables oder rc.local –

+0

Sie müssen Ihren PATH richtig einstellen, um 'iptables' zu finden. –

+0

das müsste den iptables-Dienst neu starten ja? –

Antwort

12

Versuchen Sie, den vollständigen Pfad zu iptables z.

$ which iptables 
/sbin/iptables 

und als Ihr Skript wie das ändern: \

#!/bin/bash 
#blah blah run some commands to get the IP 
/sbin/iptables -A INPUT -s $p -j REJECT --reject-with icmp-host-prohibited 
echo "BANNED $p FOR $COUNT ATTEMPTS" |wall 
+0

Works danke! –

0

Versuchen Sie die folgende Lösung sollte für Sie arbeiten:

cat cronjob 
* * * * * /path/to/script.sh 

Dann:

chmod +x cronjob 
chmod +x script.sh 

/etc/init.d/crond start #redhat based servers like centos 
/etc/init.d/cron start #debian based servers like ubuntu 

crontab cronjob 

HINWEIS: Manchmal müssen Sie vollständigen Pfad von iptables-Befehl eingeben, wenn Sie Ihre Regeln nicht zu /etc/sysconfig/iptables hinzugefügt werden .

+0

Während dies eine allgemeinere und interessante Lösung ist, denke ich nicht, dass es ein Problem bei der Cronjob-Konfiguration ist, sondern auf den Pfaden der Skripte. – fedorqui

+0

Ja..Pfad von Skript und Pfad von iptables Befehl ist vielleicht das Problem – MLSC