View difference between Paste ID: S2rjgiRb and rwZWgaZn
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
'