Добро пожаловать! Войти Зарегистрироваться

Расширенный

Задачи на Bash из реальной жизни

Написал w-495 
Задачи на Bash из реальной жизни
28 February 2014 18:06
Во вложении к посту файл логов обращений к домену 2in2.ru (http://webi.2in2.ru/ в том числе) за некоторый период времени. Давайте построим статистику User-Agent (браузеров), которые переходили на этот домен.

Проще всего это сделать с помощью bash.
Сначала посмотрим, что находится внутри самого файла

$ tail access_l24_apache_aux1_14-02-28.log
66.249.78.147 - - [28/Feb/2014:15:42:14 +0400] "GET /%D0%A4%D0%B0%D0%B9%D0%BBtongue sticking out smileyotokdeneg.jpg HTTP/1.1" 200 19772 "-" "Googlebot-Image/1.0"
5.10.83.33 - - [28/Feb/2014:15:42:34 +0400] "GET /%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:RecentChangesLinked/%D0%A4%D0%B0%D0%B9%D0%BB:3obp.jpg HTTP/1.1" 200 18409 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +[ahrefs.com];
5.10.83.19 - - [28/Feb/2014:15:43:04 +0400] "GET /index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Admin_func.jpg&action=edit HTTP/1.1" 200 12879 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +[ahrefs.com];
5.140.162.37 - - [28/Feb/2014:15:43:23 +0400] "GET /%D0%9D%D0%98%D0%A0%D0%A1:_%22%D0%AD%D0%BA%D0%BE%D0%BD%D0%BE%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B6%D0%B5%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D0%B4%D0%BE%D1%80%D0%BE%D0%B6%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B5%D0%B4%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D0%B9%22 HTTP/1.1" 200 222249 "-" "CodeGator Crawler v1.0"
213.180.218.166 - - [28/Feb/2014:15:44:09 +0400] "GET /forum/ HTTP/1.1" 500 629 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
213.180.218.166 - - [28/Feb/2014:15:44:09 +0400] "GET /favicon.ico HTTP/1.1" 500 629 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
213.180.218.166 - - [28/Feb/2014:15:44:09 +0400] "GET /favicon.ico HTTP/1.1" 500 629 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
213.180.218.166 - - [28/Feb/2014:15:44:14 +0400] "GET / HTTP/1.1" 200 3197 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"
5.10.83.33 - - [28/Feb/2014:15:44:16 +0400] "GET /index.php?title=%D0%A4%D0%B0%D0%B9%D0%BBconfused smileyektor_ir-lus.jpg&limit=250&printable=yes HTTP/1.1" 200 18832 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +[ahrefs.com];
81.177.143.32 - - [28/Feb/2014:15:45:28 +0400] "GET / HTTP/1.0" 200 3197 "-" "NeuPrime.com Sysmonitor"



Запустим простенький скрипт, который нам построит статистику браузеров.

awk -F'"' '{print $6}' ./access_l24_apache_aux1_14-02-28.log  | sort | uniq -c | sort -nr

И в итоге получим следущее.

Quote
bash
$ awk -F'"' '{print $6}' ./access_l24_apache_aux1_14-02-28.log  | sort | uniq -c | sort -nr
    143 Mozilla/5.0 (compatible; AhrefsBot/5.0; +[ahrefs.com])
     91 NeuPrime.com Sysmonitor
     71 Mozilla/5.0 (compatible; YandexBot/3.0; +[yandex.com])
     53 Mozilla/5.0 (compatible; MJ12bot/v1.4.4; [www.majestic12.co.uk])
     52 Mozilla/5.0 (compatible; Googlebot/2.1; +[www.google.com])
     39 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36
     29 Mozilla/5.0 (compatible; SputnikBot/2.3)
     28 Mozilla/5.0 (compatible; Ezooms/1.0; help@moz.com)
     27 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
     26 Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +[go.mail.ru])
     22 Mozilla/5.0 (compatible; bingbot/2.0; +[www.bing.com])
     20 Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.10
     18 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1501.426 Safari/537.36 MRCHROME SOC CHANNEL_profitraf1
     16 Googlebot-Image/1.0
     13 Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +[www.google.com])
      9 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
      8 Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.11
      8 Opera/9.80 (Windows NT 5.1; MRA 6.0 (build 5998)) Presto/2.12.388 Version/12.11
      8 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.1634 Safari/535.19 YI
      7 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36
      6 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.1634 Safari/535.19 YE
      5 Opera/9.80 (Windows NT 6.1; U; Edition Yx; ru) Presto/2.10.289 Version/12.02
      5 Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0
      5 Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1
      5 Mozilla/5.0 (Windows NT 5.2; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
      5 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11
      4 Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.11
      4 Opera/9.80 (Windows NT 6.1; WOW64; U; MRA 8.0 (build 5880); ru) Presto/2.10.289 Version/12.02
      4 Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.7.39 Version/11.00
      4 Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.10.229 Version/11.64
      4 Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.11
      4 Opera/9.80 (Windows NT 6.1; Edition Yx) Presto/2.12.388 Version/12.11
      4 Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.229 Version/11.64
      4 Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0
      4 Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
      4 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0
      4 Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
      4 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.19 (KHTML, like Gecko) Chrome/25.0.1323.1 Safari/537.19
      4 DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +[www.google.com])
      3 Opera/9.80 (Windows NT 6.1; MRA 6.0 (build 5976)) Presto/2.12.388 Version/12.10
      3 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
      3 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.22) Gecko/20110902 Firefox/3.6.22
      3 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.91 Safari/537.11
      2 Opera/9.80 (Windows NT 6.1; WOW64; MRA 6.0 (build 6001)) Presto/2.12.388 Version/12.11
      2 Opera/9.80 (Windows NT 6.1; U; YB/3.5.1; ru) Presto/2.6.30 Version/10.63
      2 Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.289 Version/12.01
      2 Opera/9.80 (Windows NT 5.1; U; Edition Yx; ru) Presto/2.10.289 Version/12.02
      2 Opera/8.01 (Windows NT 5.1)
      2 Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
      2 Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10
      2 Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
      2 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0
      2 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1
      2 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.1634 Safari/535.19 YI
      2 Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0
      2 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
      2 Mozilla/5.0 (Windows NT 5.2; rv:17.0) Gecko/20100101 Firefox/17.0
      2 Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0
      2 Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0
      2 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
      2 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11
      2 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5 Nichrome/self/19
      2 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322)
      2 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)
      2 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1
      1 WWW-Mechanize/1.73
      1 Opera/9.80 (Windows NT 6.1; MRA 6.0 (build 6001)) Presto/2.12.388 Version/12.10
      1 Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.10.229 Version/11.61
      1 Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1
      1 Opera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00
      1 Mozilla/5.0 (X11; Linux x86_64; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6
      1 Mozilla/5.0 (X11; Linux i686; rv:6.0) Gecko/20100101 Firefox/6.0
      1 Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729)
      1 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
      1 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1.0 Safari/537.11
      1 Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:22.0) Gecko/20130328 Firefox/22.0
      1 Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.1634 Safari/535.19 YE
      1 Mozilla/5.0 (Windows; N; ; ru-RU) AppleWebKit/527+ (KHTML, like Gecko, Safari/419.3) Qt/4.5.3
      1 Mozilla/5.0 (compatible; Baiduspider/2.0; +[www.baidu.com])
      1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler ; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727)
      1 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
      1 Mozilla/3.0 (compatible; Indy Library)
      1 Googlebot/2.1 (+[www.google.com])
      1 CodeGator Crawler v1.0
      1 -

Таким образом, чаще всего в указанный промежуток времени хост посещал поисковый робот от [ahrefs.com]
Чуть менее часто, поисковые роботы наших любимых Google, Яндекс, Mail.ru и Microsoft Bing. Совсем редко, посетителями были реальные люди с обычными обраузерами "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36".

Аналогично (на подобных скриптах) строится различные метрики посещаемости сайта.
Если действия требуют пояснения, то задавайте вопросы в комментариях. =)

На практике, очень часто проходится проводить такой анализ. Например, так можно выделить все IP пользователей, переходящих на сайт, или найти уязвимости самого сайта, или выявить стандартные методы атаки на сайты и т. д.



Исправлений: 5. Последний раз редактировал w-495 в 28.02.2014, 19:07.
Вложения:
открыть | скачать - access_l24_apache_aux1_14-02-28.log.zip (22.1 KB)
открыть | скачать - l7_apache_aux1.zip (19.24 MB)
открыть | скачать - l24_apache_aux1.zip (6.66 MB)
sai
Re: Задачи на Bash из реальной жизни
06 March 2014 22:10
Главное что непонятно, зачем делать это на баше? Данные в raw виде никому не интересны.
Re: Задачи на Bash из реальной жизни
07 March 2014 03:03
А в каком нужны? Графики? Gnuplot или PGF\Tikz же?

Например, посчитать статистику просмотров браузерами по большой выборке
и отказаться от поддержки недобраузеров (IE < 9.0, Opera < 10.0, FF < 3.6 ).

Например, для интранета посчитать куда пользователи чаще всего заходят,
чем пользуются, а чем не пользуются.
И отказаться от поддержки неиспользуемых частей системы.
Задача одноразовая, и что-то более навороченное просто нет времени писать.
Во общем, в Яндексе, так и делают для разного рода админок.

Кроме того, такие навыки помогают быстро дать приближенный ответ,
когда нормальная система статистики накрылась медным тазом под DDOS нагрузкой.
К сожалению, только зарегистрированные пользователи могут писать в этом форуме.

Авторизоваться на форуме