вторник, 23 августа 2011 г.

парсим логи squid

Появилась задачка посмотреть что скачал mac mini и откуда, благо подключен через прокси сервер squid.

Парсим лог сквида и отбираем по 'swcdn.apple.com сохраняем в файл:
grep 'swcdn.apple.com' /var/log/squid/access.log > ~/apple.txt 

Получается apple.txt вида:
1314056191.316    134 10.0.4.14 TCP_MISS/200 1292 GET http://swcdn.apple.com/content/downloads/08/52/041-1370/hQmLYVQxH6JHFBPpCYjMSYxV7j7yYHNGh9/iWeb_304.pkg - DIRECT/10.0.4.1 text/html
1314056192.025    106 10.0.4.14 TCP_MISS/200 1292 GET http://swcdn.apple.com/content/downloads/27/18/041-1885/q2WhCCK7z3s6Fdv5CykkL45Y3DQTnNZcN6/iMovie9.0.4Update.pkg - DIRECT/10.0.4.1 text/html

Выводим дату и время в человеческом виде, ссылку и размер скачанного по каждой ссылке:
awk -F' ' '{ print strftime("%c",$1) " " $7 " " $2 }' ~/apple.txt

Результат получаем вот в таком виде:
Втр 23 Авг 2011 10:36:31 http://swcdn.apple.com/content/downloads/08/52/041-1370/hQmLYVQxH6JHFBPpCYjMSYxV7j7yYHNGh9/iWeb_304.pkg 134
Втр 23 Авг 2011 10:36:32 http://swcdn.apple.com/content/downloads/27/18/041-1885/q2WhCCK7z3s6Fdv5CykkL45Y3DQTnNZcN6/iMovie9.0.4Update.pkg 106

Считает общий размер скачанного:
awk -F' ' '{ print strftime("%c",$1) " " $7 " " $2 }' ~/apple.txt | awk -F' ' 'BEGIN { summ=0 } { summ+=$7 } END { print "total bytes: " summ}'

Результат:
total bytes: 240
Вот собственно и все.

Кому удобнее могут сразу записать все в однострочник без использования промежуточного файла apple.txt
На пример так:
grep 'swcdn.apple.com' /var/log/squid/access.log | awk -F' ' '{ print strftime("%c",$1) " " $7 " " $2 }'

Комментариев нет:

Отправить комментарий