Bash脚本命令不能在cron中工作

我有以下bash脚本来读取日志,并检查蛮力,然后阻止使用iptables IP。

#!/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 

我做了chmod 755.当我从terminal运行命令,它工作正常。 但是当我使用crontab -e作为root设置一个cronjob时,它得到IP,并且回显“BANNED …”消息到墙上,但是没有任何东西被添加到iptables列表中。

PS。 我试过#!/bin/bash#!/bin/sh但没有运气。

Solutions Collecting From Web of "Bash脚本命令不能在cron中工作"

尝试提供iptables完整的路径例如

 $ which iptables /sbin/iptables 

而不是像这样修改你的脚本:\

 #!/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 

尝试下面的解决方案应该为你工作:

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

然后:

 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 

注:有时,如果您的规则未添加到/etc/sysconfig/iptables则需要输入IPTABLES命令的完整路径。