|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Nechayev 2:5020/400 09 Mar 2004 10:39:38 To : Anatoly Mashanov Subject : Re: Снятие показаний счётчиков с ipfw и мгновенное обнуление -------------------------------------------------------------------------------- >>> Anatoly Mashanov wrote: AZ>> Можно ли как-нибудь снять показания счётчиков ipfw и сразу их обнулить AZ>> ? А то боюсь, пока моя программа на php их снимает, обрабатывает, AZ>> успевает набежать траффик, после чего я выполняют команду ipfw zero. AM> ТРАФИК s,s1; AM> s1=(ТРАФИК)0; AM> for(;;){ AM> s=счетчик(ipfw); AM> трафик=s-s1; AM> s1=s; AM> }; Идея-то правильная, но без алгоритма обработки сброса счётчиков в 0 (по явному ipfw zero, по перезагрузке, по переустановке комплекта правил, и так далее) совершенно нежизненна. Поэтому на самом деле получается примерно так: /* вызывается по крону или из демона */ traffic_t curr, prev, incr; traffic_t intl_max; /* сколько максимально может пробежать за это время через правило */ curr = from_ipfw(); prev = from_base(); incr = curr - prev; /* если перешли через 0, вычитание даст разницу */ if( incr > intl_max ) { if( curr < intl_max ) { syslog( "увидели сброс счётчика, берём текущее значение" ); incr = curr; } else { syslog( "требуха какая-то, чесс слово..." ); incr = intl_max; } } save_to_base( curr ); return( incr ); Точную проверенную практикой реализацию наверняка можно стащить из ipa, rrdtool или аналогичного по сути и уровню компетентности средства. -netch- --- ifmail v.2.15dev5.3 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.unix.bsd/7368ee487be3.html, оценка из 5, голосов 10
|