Как парсить в linux результаты сниффера на лету?

Я хочу отсортировать и подсчитать, сколько клиентов скачали файлы (3 типа) с моего сервера.

Я установил tshark и выполнил следующую команду, которая должна захватить GET запросов:

`./tshark  'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' -R'http.request.method == "GET"'`

Итак, сниффер начинает работать и каждую секунду я получаю новую строку, вот результат:

 0.000000 144.137.136.253 -> 192.168.4.7  HTTP GET /pids/QE13_593706_0.bin HTTP/1.1
 8.330354 1.1.1.1 -> 2.2.2.2  HTTP GET /pids/QE13_302506_0.bin HTTP/1.1
 17.231572 1.1.1.2 -> 2.2.2.2  HTTP GET /pids/QE13_382506_0.bin HTTP/1.0
 18.906712 1.1.1.3 -> 2.2.2.2  HTTP GET /pids/QE13_182406_0.bin HTTP/1.1
 19.485199 1.1.1.4 -> 2.2.2.2  HTTP GET /pids/QE13_302006_0.bin HTTP/1.1
 21.618113 1.1.1.5 -> 2.2.2.2  HTTP GET /pids/QE13_312106_0.bin HTTP/1.1
 30.951197 1.1.1.6 -> 2.2.2.2  HTTP GET /nginx_status HTTP/1.1
 31.056364 1.1.1.7 -> 2.2.2.2  HTTP GET /nginx_status HTTP/1.1
 37.578005 1.1.1.8 -> 2.2.2.2  HTTP GET /pids/QE13_332006_0.bin HTTP/1.1
 40.132006 1.1.1.9 -> 2.2.2.2  HTTP GET /pids/PE_332006.bin HTTP/1.1
 40.407742 1.1.2.1 -> 2.2.2.2  HTTP GET /pids/QE13_452906_0.bin HTTP/1.1

что мне нужно сделать, чтобы сохранить тип результатов и подсчитать как /pids/*****.bin в другом файле. Я не силен в Linux, но уверен, что это можно сделать с помощью 1-3 строк скрипта.

Может быть, с awk, но я не знаю, как можно прочитать результат сниффера.

Спасибо,


person Maxim Shoustin    schedule 10.04.2013    source источник


Ответы (1)


Разве вы не можете просто просмотреть файл журнала вашего веб-сервера?

В любом случае, чтобы извлечь строки захваченного http-трафика относительно файлов вашего сервера, просто попробуйте с

./tshark  'tcp port 80 and \
           (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' \
           -R'http.request.method == "GET"' | \
  egrep "HTTP GET /pids/.*.bin"
person Davide Berra    schedule 10.04.2013
comment
конечно, я могу анализировать журналы, но иногда я получаю размер файла 10-20G, и это приводит к высокой загрузке процессора. Поэтому я пытаюсь понюхать его. - person Maxim Shoustin; 10.04.2013
comment
просто проанализируйте вывод следующим образом tail -f /path/logfile | grep etc, если вам нужны данные from now on - person Davide Berra; 10.04.2013