суббота, 20 декабря 2008 г.

Эх, не силен я в regexp

Давно хочется разобраться с regexp'ами, но книжку читать всухую бесполезно, а на работе всегда надо быстро....
В результате рождаются на свет дикие конструкции типа cat asa_smtp.log | awk '{print $10}' | cut --delimiter=\/ -f2 | cut --delimiter=\( -f1 | cut -d. -f1,2,3 | sort -r |uniq -c | sort -rn | head -n 10


Строка выбирает удаленный ип адрес коннектившихся на 25 порт релея из лога cisco asa, отсекает последний октет адреса, группирует получившиеся подсети с подсчетом числа вхождений, сортирует и показывает топ 10 самых активных "писателей". Дальше ручками проверяем по логам sendmail'а, что адреса в списке не из нашей деревни и банним их навеки вечные, ибо спаммеры окончательно задолбали.

ЗЫ
1. uniq по несортированному списку оставляет много одинаковых строк, видимо память у него все таки короткая, но ман на эту тему молчит.

2. Полезно сравнить между собой списки, сгруппированнные по маскам /24 и /16, у многих операторов большие пулы для adsl, ppp, pppoe и прочих пользовательских хренотеней