DEDIBOX-NEWS.COM

Le Forum Non Officiel de la DEDIBOX

Vous n'êtes pas identifié.

#1 2008-07-17 10:50:56

cyrilpop
Jeidi
Date d'inscription: 2008-04-09
Messages: 189

Pb d'exécutiopn de script sous crontab

Salut à tous


j'ai un petit pb pour exécuter mon script sous ma crontab :


j'ai fait un script /bin/secure

Code:

#!/bin/ksh
##########################################################################################
set +x
#
# Script qui permet de limiter les scan ssh
#
#########################################################################################
# Definition des variables
#########################################################################################
repertoire=/var/log
fic_tmp=/tmp/secure.lst
fic_ip=/tmp/ip_ban.lst
fic_ip1=/tmp/ip_ban1.lst
list2ban=/tmp/list2ban.lst
liste_ban=/tmp/listebanie.list
max_atpt=4
mon_ip=.116
touch $fic_ip1
touch /tmp/listebanie.list
date=`date`
#########################################################################################
# Creation du fichier temporaire de log
#########################################################################################
cat $repertoire/auth.log > $fic_tmp
cat $repertoire/mail*>> $fic_tmp
cat $repertoire/apache2/* >> $fic_tmp
cat $repertoire/proftpd/* >> $fic_tmp
#########################################################################################
# Recuperation des ip frauduleuses
#########################################################################################
cat $fic_tmp | grep "without hostname" | cut -d[ -f4|cut -d] -f1 | cut -d' ' -f2 > $fic_ip
cat $fic_tmp | grep "File does not exist" | cut -d[ -f4|cut -d] -f1 | cut -d' ' -f2 | grep -v "66.249.66.50" >> $fic_ip
cat $fic_tmp | grep "/main.php" | cut -d' ' -f1 | grep -v "66.249.66.50" | >> $fic_ip
cat $fic_tmp | grep "Failed password" | grep -v "invalid" | awk '{ print $11}' >> $fic_ip
cat $fic_tmp | grep "invalid user" | awk '{ print $13 }' >> $fic_ip
cat $fic_tmp | grep "ffff" | cut -d"(" -f2 | cut -d] -f1 | cut -d: -f7 >> $fic_ip

sort $fic_ip > ${fic_ip}.tmp
cat ${fic_ip}.tmp | grep -v $mon_ip | grep -v .194 > $fic_ip
rm ${fic_ip}.tmp
diff $fic_ip1 $fic_ip | awk '{ print $2 }' > $list2ban
#########################################################################################
# Debut du traitement pour les bans
#########################################################################################
ip1=0
while read ligne
do
        ip_scan=$ligne
        if [[ "$ip1" = "$ip_scan" ]]
        then
                i=`expr $i + 1`
                if [[ "$i" > "$max_atpt" ]]
                then
                        exist=`cat $liste_ban | grep $ip_scan | wc -l | awk '{ print $1 }'`
                        if [[ "$exist" = "0" ]]
                        then
                                echo $date : ban de $ip_scan
                                echo $ip_scan banie >> $liste_ban
                                iptables -A INPUT -s $ip_scan -j DROP
                        fi
                fi
        else
                i=0
        fi
        ip1=$ip_scan
done<$list2ban
cat $fic_ip>$fic_ip1

qui est lancé via la crontab toute les minutes :

Code:

# m h  dom mon dow   command
  * *   *   *   *    /bin/secure >> /var/log/secure.log

mais voila le soucis : quand je l'exécute via la crontab il ne fait rien (iptables -L reste vide s'il y a du ban à faire). Or mon fichier de log indique bien qu'il aurait du banir quelques ips.
Et si je l'exécute à la main dans mon shell il fait bien le ban. D'ou peut venir le pb ????

J'oublie de préciser que le script est bien entendu lancé via la crontab de root.



Merci de vos conseils smile

Hors ligne

 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson