Nossa cara... isso que eu estava estudando... vou estudar o teu codigo
aqui...

O seu arquivo /etc/firewall/pipes.sh é seu ipfw certo???

Abraços...

Em 31/05/07, Tiago N. Sampaio <[EMAIL PROTECTED]> escreveu:
>
> Eu faço isso, fiz um script em php que pega o uso atual da banda via
> snmp, tira a media com o minuto anterior
> e aumenta ou diminui a banda...
> ele na verdade grava em arquivos, e depois eu fiz um script de firewall
> ler esse arquivos...
> vou colocar o script aqui, pq ele eh pequeno mesmo:
>
>
> #!/usr/local/bin/php -f
> <?
>
> require("adodb/adodb.inc.php");
>
> $dbhost="seudbpgsql";
> $dbpass="senha";
> $dbuser="user";
> $dbbase="base";
> $db = NewADOConnection('postgres8');
> $db->Pconnect($dbhost,$dbuser,$dbpass,$dbbase) or die("erro");
>
> //Essa variavel define a taxa de amostragem
> $tempo = 60;
>
> //Soh pra zerar...
> $anterior="";
> $atual="";
>
> // valores que vc quer que a sua banda fique, pois ele vai tentar manter
> entre os dois sempre...
> //em BPS
> $tetomaximo="11800000";
> $tetominimp="11200000";
>
> //percentual anterior
> $percentual=0.5;
> //toda a variação é nesses valores, que vai de 0% a 100%
> $velocidades = array(50,80,100,150,210,50,374,648,90,200,500);
> //o que estiver aqui eh garantido
> $velocidades_garantidas =
> array(100,150,200,300,390,50,650,1400,60,100,100);
> //Arquivos pra gravar as velocidades
> $arquivos =
>
> array("V150","V230","V300","V450","V600","V128","V1024","V2048","V150N","V300N","V600N");
>
> while(TRUE){
>         $anterior=$atual;
>         $atual = snmpget("ipdorouter","comunidade","ifOutOctets.1");
>         $atual = str_replace("Counter32: ","",$atual);
>         sleep($tempo);
>
>         if(!$anterior || !$atual) continue;
>
>         $media = round((($atual - $anterior)/$tempo)*8);
>         else if($media > $tetomaximo) mudar_percentual(0);
>         else if($media < $tetominimo) mudar_percentual(1);
>         else continue;
>         system("/bin/sh /etc/firewall/pipes.sh");
> }
>
>
> function mudar_percentual($status){
>         GLOBAL $percentual;
>         GLOBAL $velocidades;
>         GLOBAL $velocidades_garantidas;
>         GLOBAL $arquivos;
>         GLOBAL $db;
>
>         if($status == 1){
>                 if($percentual > 0.9) return;
>                 $percentual+=0.1;
>         }else{
>                 if($percentual < 0.1) return;
>                 $percentual-=0.1;
>         }
>
>         for($i=0;$i<count($velocidades);$i++){
>                 $velocidade =
> round($velocidades_garantidas[$i]+($velocidades[$i]*$percentual));
>                 $db->Execute("UPDATE velocidades SET velocidade =
> '$velocidade' WHERE plano = '".$arquivos[$i]."'");
>
> if(!($arquivo=fopen("/etc/firewall/velocidades/".$arquivos[$i],"w"))){
>                         continue;
>                 }
>                 fprintf($arquivo,$velocidade);
>                 fclose($arquivo);
>         }
> }
>
> ?>
>
> É algo bem simples e tosco, que grava a velocidade no banco apenas pra
> consulta, pro gerente saber a quantas andam os planos
> dos clientes...
> ai vc adapta ele conforme vc precisar...
>
> E antes que alguem me fale, Pq naum usa pf, jah usou um pf com mais de
> 2000 queues?
> eu tentei colocar, mas pra medir a velocidade de todo mundo aqui,
> precisaria de no minimo uma maquina quadriprocessada...
>
> Abraços
>
>
> ThOLOko wrote:
> > Galerinha BSD,
> >
> > Queria desenvolver algum tipo de controle de banda em IPFW que seja
> > dinamico... por exemplo,,, criar grupos de bandas conforme o uso do
> pessoal
> > para nao disperdiçar banda...
> >
> > Alguem tem alguma ideia??? Gostaria de usar PHP+MySQL contendo os
> clientes e
> > suas respectivas bandas...
> >
> > PF resolveria??
> >
> > Abbraços...
> >
> >
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>



-- 
ThOLOko
-FreeBSD-
UniX TeaM
-------------------------
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd

Responder a