SHOW:
|
|
- or go back to the newest paste.
1 | #!/bin/bash | |
2 | ||
3 | PROM='[0-9]\{1,3\}'; | |
4 | IP=" $PROM\.$PROM\.$PROM\.$PROM "; | |
5 | ||
6 | - | cat apache.log | tr "]" " " | sed 's|\('"$IP"'\).*|\1|' | sed 's|.*\('"$IP"'\)$|\1|' | sort | uniq -c | sort -nr -k1,1 | awk '{if(NR==1 || OLD==$1){print $2 ; OLD=$1}}' | sort -n -t"." -k1 -k2 -k3 -k4 |
6 | + | cat apache.log | tr "]" " " | sed 's|\('"$IP"'\).*|\1|' | sed 's|.*\('"$IP"'\)$|\1|' | sort | uniq -c | sort -nr -k1,1 | awk '{if(NR==1 || OLD==$1){print $2 ; OLD=$1}}' | sort -n -t"." -k1 -k2 -k3 -k4 |
7 | ||
8 | echo' | |
9 | V aktuálním adresáři je soubor apache.log se záznamem přístupů k webovému serveru. | |
10 | Vypište nejčetnější IP adresu nebo adresy, pokud je jich více. Každou unikátní adresu vypište na samostatný řádek, seřazené vzestupně podle jednotlivých oktetů IP adresy zleva. | |
11 | V logu mohou být i chybové zprávy, také mají IP adresu původce, ale řádka je v jiném formátu. Tyto IP adresy je nutné zpracovat také. | |
12 | ||
13 | Příklady | |
14 | Log soubor obsahuje například těchto pět řádků: | |
15 | ||
16 | Oct 1 00:02:30 edux ap2[rpx]: 147.32.123.135 - - [10/1/2011:00:02:30 +0] "GET /BI-UOS/lec/03/3prednaska.pdf HTTP/1.1" 206 5830 | |
17 | Oct 1 00:02:31 edux ap2[rpx]: 147.32.123.135 - - [10/1/2011:00:02:31 +0] "GET /BI-UOS/lec/03/3prednaska.pdf HTTP/1.1" 206 5830 | |
18 | Oct 1 00:02:43 edux ap2[rpx]: 86.49.86.108 - - [10/1/2011:00:02:43 +0] "GET /BI-UOS/tutor/06/start HTTP/1.1" 200 23817 | |
19 | Oct 1 00:02:43 edux ap2[rpx]: 86.49.86.108 - - [10/1/2011:00:02:43 +0] "GET /BI-UOS/lib/exe/idx.php?id=p%3A%3A HTTP/1.1" 200 42 | |
20 | Oct 1 00:02:46 edux ap2[rpx]: 77.236.192.69 - - [10/1/2011:00:02:46 +0] "GET /BI-UOS/tutor/03/vi.png?id=%3A3 HTTP/1.1" 200 1122 | |
21 | ||
22 | Na standardní výstup vypisujeme: | |
23 | ||
24 | 86.49.86.108 | |
25 | 147.32.123.135 | |
26 | ||
27 | Log soubor obsahuje například těchto jiných osm řádků: | |
28 | ||
29 | Oct 12 00:02:30 edux ap2[rpx]: 147.32.123.135 - - [10/1/2011:00:02:30 +0] "GET /BI-UOS/lec/03/3prednaska.pdf HTTP/1.1" 206 5830 | |
30 | Oct 12 00:02:31 edux ap2[rpx]: 147.32.124.135 - - [10/1/2011:00:02:31 +0] "GET /BI-UOS/lec/03/3prednaska.pdf HTTP/1.1" 206 5830 | |
31 | Oct 12 00:02:59 edux ap2[rpx]: [Wed Oct 12 00:02:59 2011] [error] [client 147.32.123.136] File does not exist: /apache/data/muieblackcat | |
32 | Oct 12 00:08:05 edux ap2[rpx]: 147.31.9.135 - - [10/1/2011:00:08:05 +0] "GET /BI-UOS/lec/07/7prednaska.pdf HTTP/1.1" 200 9210 | |
33 | Oct 12 00:08:43 edux ap2[rpx]: 86.49.86.109 - - [10/1/2011:00:08:43 +0] "GET /BI-UOS/tutor/06/start HTTP/1.1" 200 23817 | |
34 | Oct 12 00:08:44 edux ap2[rpx]: 86.49.86.108 - - [10/1/2011:00:08:44 +0] "GET /BI-UOS/lib/exe/idx.php?id=p%3A%3A HTTP/1.1" 200 42 | |
35 | Oct 12 00:08:46 edux ap2[rpx]: 77.236.192.69 - - [10/1/2011:00:08:46 +0] "GET /BI-UOS/tutor/03/vi.png?id=%3A3 HTTP/1.1" 200 1122 | |
36 | Oct 12 00:09:51 edux ap2[rpx]: 147.31.124.135 - - [10/1/2011:00:09:51 +0] "GET /BI-UOS/lec/03/3prednaska.pdf HTTP/1.1" 206 5830 | |
37 | ||
38 | Na standardní výstup vypisujeme: | |
39 | ||
40 | 77.236.192.69 | |
41 | 86.49.86.108 | |
42 | 86.49.86.109 | |
43 | 147.31.9.135 | |
44 | 147.31.124.135 | |
45 | 147.32.123.135 | |
46 | 147.32.123.136 | |
47 | 147.32.124.135 | |
48 | ||
49 | Poznámky | |
50 | IP adresa je uspořádaná čtveřice čísel oddělených tečkami, v předchozích příkladech je to třeba: | |
51 | 147.32.123.135 | |
52 | ||
53 | Poznámky k příkladu | |
54 | Větší soubor pro experimentování je připraven na serverech fray: | |
55 | /home/courses/BIPS1/public/07/apache.log | |
56 | Druhý příklad na zkontrolování dodržení předepsaného seřazení výsledků by v ostré verzi zadání neobsahoval adresu 147.31.9.135. | |
57 | ' |