2017-09-25 2 views
-2

y access_log généré par le serveur seb apache besoin de trouver le plus grand nombre d'appels à partir de quelles adresses IP vers le serveur Web comment trouver top 5 adresses IP accédé serveur web apache, donné le fichier access_log?comment trouver les 5 meilleures adresses IP accédées au serveur web apache, donné le fichier access_log?

64.242.88.10 - - [08/Mar/2004:02:45:03 -0800] "GET /twiki/bin/search/TWiki/?scope=topic&regex=on&bookview=on&search=.* HTTP/1.1" 200 102399 
64.242.88.10 - - [08/Mar/2004:02:46:12 -0800] "GET /twiki/bin/edit/Main/Local_recipient_maps?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12851 
64.242.88.10 - - [08/Mar/2004:02:47:58 -0800] "GET /mailman/listinfo HTTP/1.1" 200 6893 
lj1025.inktomisearch.com - - [08/Mar/2004:02:48:05 -0800] "GET /twiki/bin/oops/Main/KevinWGage HTTP/1.0" 200 209 
prxint-sxb3.e-i.net - - [08/Mar/2004:02:50:53 -0800] "GET /twiki/bin/view/Main/WebHome HTTP/1.0" 200 10392 
prxint-sxb3.e-i.net - - [08/Mar/2004:02:50:54 -0800] "GET /twiki/pub/TWiki/TWikiLogos/twikiRobot46x50.gif HTTP/1.0" 200 2877 
64.242.88.10 - - [08/Mar/2004:02:52:39 -0800] "GET /twiki/bin/view/Main/PostfixCmd HTTP/1.1" 200 4173 
prxint-sxb2.e-i.net - - [08/Mar/2004:02:54:29 -0800] "GET /twiki/bin/view/Main/SpamAssassinAndPostFix HTTP/1.0" 200 4022 
64.242.88.10 - - [08/Mar/2004:02:54:54 -0800] "GET /twiki/bin/edit/TWiki/NewTopic?topicparent=TWiki.WikiSyntax HTTP/1.1" 401 12846 
64.242.88.10 - - [08/Mar/2004:02:59:03 -0800] "GET /twiki/bin/rdiff/TWiki/TWikiSite HTTP/1.1" 200 71941 
64.242.88.10 - - [08/Mar/2004:03:01:12 -0800] "GET /twiki/bin/rdiff/TWiki/SimultaneousEdits HTTP/1.1" 200 6180 
64.242.88.10 - - [08/Mar/2004:03:06:31 -0800] "GET /twiki/bin/view/Main/NicholasLee?rev=1.2 HTTP/1.1" 200 3570 
64.242.88.10 - - [08/Mar/2004:03:07:59 -0800] "GET /twiki/bin/view/TWiki/TWikiHistory?rev=1.9 HTTP/1.1" 200 15756 
64.242.88.10 - - [08/Mar/2004:03:09:20 -0800] "GET /mailman/listinfo/ncbnpfaculty HTTP/1.1" 200 6331 
+1

Veuillez montrer vos efforts de codage. – Cyrus

+0

et votre sortie attendue. –

Répondre

1

Vous pouvez utiliser un pipeline de cut, sort et uniq.

cut -f1 -d" " log.txt | # Using " " as delimiter, retrieve 1st field of each line 
    sort |    # Sort the output; `uniq` needs sorted input 
    uniq -c |    # `c`ount the unique values 
    sort -nr |   # Sort `n`umerically in `r`everse 
    head -n5    # and only output the first 5 lines. 

Pour votre entrée, la sortie est

10 64.242.88.10 
    2 prxint-sxb3.e-i.net 
    1 prxint-sxb2.e-i.net 
    1 lj1025.inktomisearch.com 
1

awk solution:

$ awk '{a[$1]++} END{for (i in a) print i, a[i]}' input.txt | 
    sort -nr -k2 | 
    head -n5 

avec le résultat:

$ awk '{a[$1]++} END{for (i in a) print i, a[i]}' input.txt | sort -nr -k2 | head -n5 
64.242.88.10 10 
prxint-sxb3.e-i.net 2 
prxint-sxb2.e-i.net 1 
lj1025.inktomisearch.com 1 
0

Une solution en bash, remplacer ' log 'w avec votre nom de fichier.

grep -oe '^\d\+\.\d\+\.\d\+\.\d\+' log | sort | uniq -c