Блог - Linux, программирование, Я!

PythonКак правильно распарсить access лог Nginx/Apache

Наверняка у многих возникает такая задача - извлечь какие-то данные из Access лога Apache или Nginx. Записи лога обычно выглядят как то так:

91.77.238.152 - - [02/Dec/2013:20:31:45 +0400] "GET /blog/2012/01/31/plagin-l2tp-dlya-networkmanager/ HTTP/1.1" 200 70666 "http://yandex.ru/clck/jsredir?text=%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%20l2tp%20%D0%B4%D0%BB%D1%8F%20networkmanager&uuid=..." "Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.1.16) Gecko/20111108 Iceweasel/3.5.16 (like Firefox/3.5.16)"

На первый взгляд кажется, что форматирование этой строки какое-то нелогичное и ничем не оправданное: где то значения заключены в кавычки, где-то в квадратные скобки, где то значение записано как есть. Из за этого кто-то пытается сконструировать огромную нечитаемую регулярку, которую приходится каждый раз писать заново, из за того, что через неделю понять что же она делает нереально. Кто то разбивает строку по пробелам и надеется на лучшее, при этом поле даты разрезается на 2 части а User-Agent превращается вообще в необрабатываемое месиво.

Мы же поступим иначе - попробуем найти систему в структуре этой строки и напишем полноценный лексический анализатор. (далее...)

Программированиеbash скриптик

Вот поразвлекался ночью...
Нужно было составить список фильмов на файлсервере и преобразовать его в список ссылок (BB кодов)
Ну, список получить не сложно оказалось, просто подмонтировал smbfilesystem к своей системе и сделал там ls
С преобразованием в ссылки оказалось сложнее т.к. имена файлов были как на английском, так и на русском так что нужно было преобразовать их в URL формат (т.е. что-то вроде %D4%E8%EB%FC%EC%FB%20%F1 )
Нарыл на эту тему описание схемы кодирования:
http://ru.wikipedia.org/
сам, как можно догадаться, его реализовать не смог, поэтому пришлось заюзать сервис Ответы Google там довольно быстро подсказали решение и в результате бессонной ночи и изучения мануалов по sed и awk получилось вот это чудо: (далее...)

linux на десктопеНемного об iptables

Ну достали меня соседи и все тут....
В общаге в блоке один компьютер на 5 человек и тот мой Вот и приходится отбиваться каждый день от желающих посидеть.....
Вконтакте!(((

Но, благодаря некоторым фишкам linux эта проблема меня вряд-ли будет волновать теперь ]:->

И так, немного поковырявшись в просторах интернета, полистав умных книжек и посоветовавшись с парой несомненно продвинутых в этом деле товарищей, принялся ваять....
(далее...)