如何每分钟在 cron.d 中运行此脚本?

如何每分钟在 cron.d 中运行此脚本?

我正在使用 ubuntu 15.04,我遭受了大量的 DDoS 攻击,我想通过阻止攻击者的 IP 来阻止这些攻击,所以我计划在 cron.d 中每分钟运行这个脚本并使其自动启动

我怎样才能做到这一点

#!/bin/bash

#Collecting list of ip addresses connected to port 20000

netstat -plan|grep :20000|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1 > /root/iplist

#Limit the no of connections
LIMIT=10;

for ip in `cat /root/iplist |awk '{print $2}'`;do

if [ `grep $ip /root/iplist | awk '{print $1}'` -gt $LIMIT ]
then
echo "100 connection from $ip... `grep $ip /root/iplist | awk '{print $1}'` number of connections... Blocking $ip";

#Blocking the ip ...

/etc/rc.d/init.d/iptables save > /dev/null;
CHECK_IF_LOCALIP=0;
/sbin/ifconfig | grep $ip > /dev/null;
if [ $? -ne $CHECK_IF_LOCALIP ]
then
{
FLAG=0;
grep $ip /etc/sysconfig/iptables | grep DROP > /dev/null;
if [ $? -ne $FLAG ]
then
iptables -I INPUT -s $ip -j DROP;
else
echo " Ipaddress $ip is already blocked ";
fi
}
else
echo " Sorry, the ip $ip cannot be blocked since this is a local ip of the server ";
fi
fi
done 

答案1

关注cron脚本的条目而不是内容,假设脚本是~/foobar.sh,每分钟运行一次脚本作为cron作业,打开croncrontab -e并添加:

*/1 * * * * ~/foobar.sh

首先确保该脚本是可执行的。

*/1在分钟列中将crond每分钟执行一次脚本,而如果只输入,1脚本将仅在给定小时的第一分钟执行。

答案2

要向 中添加条目crontab,请使用sudo crontab -e,然后会打开编辑器(可能是 vi,或者程序会让您选择)。然后按照以下结构添加任务:minute hour (day of month) month (day of week) command。使用数字值或 * 表示“任何”任务。每项任务占一行。然后,保存。

在你的情况下会是这样的*/1 * * * * /full/path/to/the/script.sh

这一页,可以帮助您充分了解 crontab 和 cronjob 的工作原理。

相关内容