1 votes

comment exécuter ce script dans cron.d toutes les minutes ?

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

comment puis-je faire cela

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

2voto

heemayl Points 85741

L'accent est mis sur le cron plutôt que le contenu du script, en supposant que le script est ~/foobar.sh pour exécuter le script chaque minute en tant que cron travail, ouvrez votre cron table par crontab -e et ajoutez :

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

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

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

0voto

Travis Points 333

Pour ajouter une entrée à crontab utiliser sudo crontab -e et ouvrira ensuite un éditeur (probablement vi ou le programme vous laissera choisir). Ensuite, ajoutez 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 "tout". Chaque tâche en une seule ligne. Et ensuite, enregistrez-le.

Dans votre cas, ce sera quelque chose comme */1 * * * * /full/path/to/the/script.sh

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X