como executar este script no cron.d a cada minuto?

0

Estou usando o Ubuntu 15.04 Eu tenho ataques de dodos enormes Eu queria parar com ataques bloqueando ips de atacantes, então estou planejando rodar este script a cada minuto dentro do cron.d e fazer com que ele inicie automaticamente

como posso fazer isso

#!/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 
    
por Vlark.Lopin 05.08.2016 / 13:05

2 respostas

1

Focando na entrada cron em vez do conteúdo do script, assumindo que o script é ~/foobar.sh , para executar o script a cada minuto como cron job, abra a tabela cron em crontab -e e adicione :

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

Certifique-se de que o script seja executável no início.

*/1 na coluna minuto fará com que crond execute o script a cada minuto, enquanto se você colocar apenas 1 , o script será executado somente no primeiro minuto da (s) hora (s) especificada (s). p>     

por heemayl 05.08.2016 / 19:01
0

Para adicionar uma entrada a crontab , use sudo crontab -e e, em seguida, abra um editor (provavelmente vi ou o programa permitirá que você escolha). Em seguida, adicione a tarefa seguindo a estrutura: minute hour (day of month) month (day of week) command . Use valores numéricos ou * para expressar 'qualquer' disso. Todo trabalho em uma linha. E então, salve.

No seu caso, será algo como */1 * * * * /full/path/to/the/script.sh

Veja esta página , pode ajudar você a entender como funciona o crontab e o cronjob.

    
por melchor629 05.08.2016 / 13:13