Bash脚本命令在cron中不起作用

时间:2014-04-10 09:42:50

标签: linux 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.当我从终端运行命令时它工作正常。但是当我使用crontab -e作为root设置一个cronjob时,它获取IP并回声" BANNED ..."消息到墙上但没有任何内容添加到iptables列表中。

PS。我尝试了#!/bin/bash#!/bin/sh,但没有运气。

2 个答案:

答案 0 :(得分:13)

尝试提供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

答案 1 :(得分:0)

尝试以下解决方案应该适合您:

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命令的完整路径。