question du jour
|
12-11-2013, 10h26
Message : #1
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
question du jour
on part d'un fichier de logs apache classique, chaque ligne a un format du genre :
Code : 1.2.3.4 - - [12/Nov/2013:09:19:43 +0100] "GET / HTTP/1.1" 200 101 "referer" "user-agent" je souhaite en parsant le fichier etablir le total du nombre de hits (== de lignes) par semaine, comment faire ?
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
12-11-2013, 10h51
Message : #2
|
|
notfound
#!/usr/bin/env bash Messages : 687 Sujets : 47 Points: 271 Inscription : Sep 2012 |
RE: question du jour
Salut gruik,
Bon j'ai pas trop le temps (cours oblige) mais un truc du genre devrait t'aider : Je pars de la date d'aujourd'hui (12) à laquelle j'ajoute +7 jours (une semaine) pour avoir des dates du 12 au 19. Code BASH :
Ensuite, une boucle et un grep, et ça semble pas trop mal. Code BASH :
|
|
12-11-2013, 11h03
Message : #3
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: question du jour
ok effectivement y'a de l'idée, au moment où j'ai écrit le post j'avais pas essayé du tout mais je savais que c'était pas hors de portée disons, j'aurais peut-être du poster dans la section défis
là j'ai quelque chose de fonctionnel (et assez lent), go sur les solutions, je posterais la mienne d'ici ce midi
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
12-11-2013, 11h21
Message : #4
|
|
Junky
Snorky Master Messages : 228 Sujets : 35 Points: 203 Inscription : Mar 2013 |
RE: question du jour
Bonjour.
Moi je suis partie la dessus: Code : for i in $(seq 1 31); do echo "jour $i"; awk '/'$i'\/Nov\/2013/ {gruik[$1]++} END {for (i in gruik){print gruik[i] " : " i}}' /var/log/apache2/access.log | sort -rnk1; done J'ai tronqué le résultat pour as avoir un plein plage d'ip.. Code : jour 1 Junky Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
12-11-2013, 11h25
(Modification du message : 12-11-2013, 11h29 par notfound.)
Message : #5
|
|
notfound
#!/usr/bin/env bash Messages : 687 Sujets : 47 Points: 271 Inscription : Sep 2012 |
RE: question du jour
Du coup j'ai fait ça :
Code BASH :
J'ai simulé un fichier de log : Code BASH :
J'obtiens : Code BASH :
Voilou. |
|
12-11-2013, 11h41
Message : #6
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: question du jour
@junky: tu comptabilises le nombre d'adresses IP différentes pour chaque jour du mois
@NotFound: tu comptabilises le nombre de hits sur les 7 derniers jours uniquement ce que je veux c'est comptabiliser le nombre de hits par semaine dans la totalité du fichier, sur le calendrier "classique" càd que le premier lundi de l'année ben on est dans la semaine 1
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
12-11-2013, 11h45
Message : #7
|
|
Junky
Snorky Master Messages : 228 Sujets : 35 Points: 203 Inscription : Mar 2013 |
RE: question du jour
Bah fais un mix des 2...
Je regarderai un peu plus tard... Taf oblige.. :/ Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
12-11-2013, 13h03
Message : #8
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: question du jour
ok donc une solution possible c'est un truc comme ça (oneliner, je le déroule pour la lisibilité) :
Code BASH :
cat access.log | c'est TRES lent et assez moche en plus de pas être rapide à pondre et pas intuitif non plus concrètement on commence par isoler avec grep la date comprise entre corchets "[42/Gam/1337:98:76:54 +0666]" le awk qui suit fait l'essentiel du boulot, il sépare la chaine, prend le 2e champ et le remplace à chaque fois par le numéro du mois qui correspond, à la fin on affiche tout sous une forme adéquate (à l'anglaise) pour que ça plaise à date ensuite on récupère donc le merdier avec xargs et on le file à date, on ressort avec le format %U qui nous donne le numéro de la semaine enfin avec le dernier awk reste a comptabiliser le nombre de lignes qui ont le même numéro, trier le tout et afficher propre si quelqu'un a plus court et/ou plus rapide je suis tout à fait preneur, sinon vous privez pas pour poser vos solution malgré tout
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
12-11-2013, 13h05
Message : #9
|
|
Junky
Snorky Master Messages : 228 Sujets : 35 Points: 203 Inscription : Mar 2013 |
RE: question du jour
Ouep en effet ca a l'air assez lourd comme process...
Je regarderai ce soir pour ma part... Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier
|
|
12-11-2013, 15h48
(Modification du message : 12-11-2013, 16h10 par gruik.)
Message : #10
|
|
gruik
gouteur de savon Messages : 757 Sujets : 44 Points: 482 Inscription : Oct 2012 |
RE: question du jour
plus court et plus rapide, toujours en une seule ligne :
Code : cat access.log | perl -MPOSIX -lne ' et ça donne ça : Code : # wc -l < access.log
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure. Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau, L'Art poétique) |
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
question du jour 2 - le retour | gruik | 20 | 1,110 |
04-06-2014, 19h08 Dernier message: wapiflapi |
|
Question pour la création de mon site... | Wabouz | 10 | 490 |
05-03-2013, 21h14 Dernier message: Wabouz |
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)