Bonjour a tous,
Que pensez vous de ce code pour arriver à mon but?
Lorsque je lance mon code, les echo de contrôle ne s'affiche correctement que pour la première ligne de mes tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #!/bin/bash ################################### ## ## Parse les fichiers de log présent dans $logdir. ## Résultat : deux tableaux par fichier, ## _hits contenant le nombre d'occurrence d'IP ## _IP tableau des IPs! ## ################################### logdir="/var/log/apache2/" ## Pour chaques fichiers access de la semaine précédente for logfile in ${logdir}access_*.1 do echo "### Traitement du fichier $logfile ###"; tabname=`echo "$logfile" | cut -d'.' -f1 | cut -c 25-`; switch=1; current=0; ## Récupérer les IPs, les trier puis en garder une de chaque précédé du nombre d'occurences for line in `awk '{print $1}' $logfile | sort | uniq -c` do ## Pour le nombre d'occurences, l'ajouter au tableau _hits du fichier en cours. if [ $switch -eq 1 ]; then temp=${tabname}_hits; eval $temp[$current]=$line; ## DEBUG : Test de l'enregistrement. echo $temp[$current] vaut ${!temp[$current]}; ((switch++)); ## Stocker chaque IP, sur la ligne de même index que son occurence, ## dans le tableau _IP du fichier en cours. else temp=${tabname}_ip; eval $temp[$current]=$line; ## DEBUG : Test de l'enregistrement. echo $temp[$current] vaut ${!temp[$current]}; ((switch--)); ((current++)); fi done done
Le but est de faire des comparaisons ensuite avec d'autres logs et de m'envoyer un mail sur certains triggers a venir.
Mais pour l'instant j'en suis là!
Est-ce une méthode viable?
Certes plein de logiciels font ce genre de travail d'analyse de logs, comme par exemple AWStats.
Je ne veux pas alourdir mon Raspberry qui est déjà bien occupé (ancien modèle avec moitié moins de RAM )
Et surtout, mon but est de m'entrainer.
Merci d'avance pour vos retours.
Partager