Показаны сообщения с ярлыком запросы. Показать все сообщения
Показаны сообщения с ярлыком запросы. Показать все сообщения

вторник, 21 сентября 2010 г.

работа - скриптинг :)

Есть у меня набор скриптов, которые работают с трафиком. Сбор статистики с маршрутизатора, генерация отчетов, закрытие доступа в инет при превышении лимита и всё такое. Написаны давно, довольно коряво, но работают уже не один год :).
А тут взялся за них и переписал некоторые. Обработку лимитов, например. До этого было реализовано тупо в лоб - брались лимиты из таблицы в БД, по одному просматривались, для каждого адреса, указанного в лимитах, считался его трафик, потом сравнивался с лимитом и потом генерировался нужный acl для роутера, если надо было. Работало медленно, было разбито на два скрипта, которые запускались по очереди - один обрабатывал данные из базы и генерил команды второму, которых конфигурил роутер. А тут переписал все в один скрипт, который одним запросом к трем таблицам БД вытаскивает все адреса, которые превысили лимит и еще не заблокированы, потом генерит для них нужные acl-и. Потом вторым запросом вытаскивает все адреса, для которых лимит не превышен, но они заблочены и генерит для них опять-таки нужные acl-и. Потом все сгенерированные acl-и сливаются в один конфиг, который разом заливается в роутер. И все красиво и быстро :) Очень доволен проделанной работой.

А недавно перед этим переделал примерно так же запросы в скрипте, который считал трафик. Ранее он считал тупо перебирая ip, считая для них трафик, определяя, к какому подразделению он(ip) относится и суммируя трафик для подразделения и в итоге выводя мне данные по всем подразделениям. А теперь одним запросом вытаскиваю суммарный трафик для всех подразделений, потом вторым запросом вытаскиваю все адреса, которые не относятся ни к одному подразделению (такие периодически всплывают :)). Красота!

Теперь еще бы переделать таблицу трафика (которая самая здоровая), чтобы ip хранился не в тексте, а в бинарном виде - тогда запросы еще быстрее должны начать выполняться.