我有以下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
,但没有运气。
答案 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命令的完整路径。