web-dev-qa-db-fra.com

comment exécuter ce script dans cron.d à chaque minute?

j'utilise ubuntu 15.04 j'ai eu d'énormes attaques DDOS Je voulais arrêter ces attaques en bloquant les ips attaquants, donc je compte exécuter ce script toutes les minutes à l'intérieur de cron.d et le faire démarrer automatiquement

comment puis je faire ça

#!/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
Vlark.Lopin

En se concentrant sur l'entrée cron plutôt que sur le contenu du script, en supposant que le script est ~/foobar.sh, pour l'exécuter toutes les minutes en tant que travail cron, ouvrez votre table cron par crontab -e et ajouter:

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

Assurez-vous que le script est exécutable au début.

*/1 dans la colonne des minutes fera crond exécuter le script toutes les minutes, alors que si vous ne mettez que 1, le script ne sera exécuté qu'à la première minute de la ou des heures données. .

2
heemayl

Pour ajouter une entrée à crontab, utilisez Sudo crontab -e puis ouvrez un éditeur (probablement vi ou le programme vous laissera choisir). Ajoutez ensuite la tâche en suivant la structure: minute hour (day of month) month (day of week) command. Utilisez des valeurs numériques ou * pour exprimer "n'importe lequel". Chaque travail dans une ligne. Et puis, enregistrez-le.

Dans votre cas, il y aura quelque chose comme */1 * * * * /full/path/to/the/script.sh

Voir cette page , pourrait vous aider à comprendre pleinement le fonctionnement de crontab et de cronjob.

0
melchor629