Página 1 de 2 12 ÚltimoÚltimo
+ Responder ao Tópico



  1. Depois de bater a cabeça consegui em um único script o controle de banda ou qualquer outro comando por horário mesmo em routerboards.

    A minha grande dificuldade era que nos conceitos normais de script para esta funcionalidade usariamos o comando ":totime" para alterar o tipo de variável da data que é uma string para um tipo de variável contendo data (:local time [/system clock get time]), mas sempre deu errado em diversas versões que testei. Resolvi inventar um pouco...

    segue abaixo um exemplo de script que compara o horário atual com o horário que iniciará e finalizará a execução do script, caso o horário atual corresponda com as condições, ele roda os comandos, do contrário ele executa outros comandos que desazem que foi executado no horário previsto, fica assim:

    para começar vamos configurar um cliente ntp:

    /system ntp client
    set enabled=yes mode=unicast primary-ntp=200.160.0.8 secondary-ntp=\
    200.189.40.8

    neste script de exemplo, a hora inicial dos comandos é de 22:00 e a hora final é de 07:00, ou seja das 22:00 às 07:00 os clientes que acessam a 129k de download e upload serão modificados automaticamente para 400k, da mesma forma os clientes que navegam a 123k passarão a acessar com 256k respectivamente, fora deste horário o comandos de desativação serão executados e os clientes voltam às velocidades originais.
    os comandos dentro de do={} rodam se as condições são verdadeiras, e os comandos dentro de else={} rodas os comandos caso as condições sejam falsas.


    :local btini 22
    :local btfim 7
    :if ([:tonum [ick [/system clock get time] 0 2 ]] >= $btini \
    || [:tonum [ick [/system clock get time] 0 2 ]] < $btfim ) \
    do={
    /que sim set [find limit-at="129k/129k"] limit-at="400k/400k" \
    max-limit="400k/400k"
    /que sim set [find limit-at="123k/123k"] limit-at="256k/256k" \
    max-limit="256k/256k"
    } else={
    /que sim set [find limit-at="400k/400k"] \
    limit-at="129k/129k" max-limit="129k/129k"
    /que sim set [find limit-at="256k/256k"] \
    limit-at="123k/123k" max-limit="123k/123k"
    }

    Por fim coloquem um agendamento para rodar este script a cada 5 minutos por assim:

    /system scheduler
    add comment="" disabled=no interval=5m name=#nomedoagendamento# \
    on-event=#nomedoscript# policy=\
    reboot,read,write,policy,test,password,sniff start-date=jan/01/1970 \
    start-time=00:00:00

    Modifiquem à vontade e me ajudem a colocar este script para rodar com precisão de minutos e segundos.

    Se tiverem dificuldade em manter a hora sincronizada com o ntp server adicione estas linhas no script dos comandos bem abaixo da sessão das variáveis:

    :delay 10s
    /sys ntp client set enabled=no
    /sys ntp client set enabled=yes

    pronto! se gostar agradece.
    Última edição por VictorOliveira; 05-06-2009 às 16:07. Razão: smiles atrapalhando o script, alguém retire por favor ":pick"

  2. Valeu pela sua enorme contribuição vou testar aqui e volto a postar o resultado mas achei fantastico seu post, parabens!



  3. Amigo pintou uma duvida, quanto a questão de controle do usuario eu uso por queues, para cada usuario com ip fixo não por dhcp seria a mesma coisa daria certo também?

    Desde já agradeço sua atenção!

    Valeu.

  4. Citação Postado originalmente por VictorOliveira Ver Post
    Depois de bater a cabeça consegui em um único script o controle de banda ou qualquer outro comando por horário mesmo em routerboards.

    A minha grande dificuldade era que nos conceitos normais de script para esta funcionalidade usariamos o comando ":totime" para alterar o tipo de variável da data que é uma string para um tipo de variável contendo data (:local time [/system clock get time]), mas sempre deu errado em diversas versões que testei. Resolvi inventar um pouco...

    segue abaixo um exemplo de script que compara o horário atual com o horário que iniciará e finalizará a execução do script, caso o horário atual corresponda com as condições, ele roda os comandos, do contrário ele executa outros comandos que desazem que foi executado no horário previsto, fica assim:

    para começar vamos configurar um cliente ntp:

    /system ntp client
    set enabled=yes mode=unicast primary-ntp=200.160.0.8 secondary-ntp=\
    200.189.40.8

    neste script de exemplo, a hora inicial dos comandos é de 22:00 e a hora final é de 07:00, ou seja das 22:00 às 07:00 os clientes que acessam a 129k de download e upload serão modificados automaticamente para 400k, da mesma forma os clientes que navegam a 123k passarão a acessar com 256k respectivamente, fora deste horário o comandos de desativação serão executados e os clientes voltam às velocidades originais.
    os comandos dentro de do={} rodam se as condições são verdadeiras, e os comandos dentro de else={} rodas os comandos caso as condições sejam falsas.


    :local btini 22
    :local btfim 7
    :if ([:tonum [ick [/system clock get time] 0 2 ]] >= $btini \
    || [:tonum [ick [/system clock get time] 0 2 ]] < $btfim ) \
    do={
    /que sim set [find limit-at="129k/129k"] limit-at="400k/400k" \
    max-limit="400k/400k"
    /que sim set [find limit-at="123k/123k"] limit-at="256k/256k" \
    max-limit="256k/256k"
    } else={
    /que sim set [find limit-at="400k/400k"] \
    limit-at="129k/129k" max-limit="129k/129k"
    /que sim set [find limit-at="256k/256k"] \
    limit-at="123k/123k" max-limit="123k/123k"
    }

    Por fim coloquem um agendamento para rodar este script a cada 5 minutos por assim:

    /system scheduler
    add comment="" disabled=no interval=5m name=#nomedoagendamento# \
    on-event=#nomedoscript# policy=\
    reboot,read,write,policy,test,password,sniff start-date=jan/01/1970 \
    start-time=00:00:00

    Modifiquem à vontade e me ajudem a colocar este script para rodar com precisão de minutos e segundos.

    Se tiverem dificuldade em manter a hora sincronizada com o ntp server adicione estas linhas no script dos comandos bem abaixo da sessão das variáveis:

    :delay 10s
    /sys ntp client set enabled=no
    /sys ntp client set enabled=yes

    pronto! se gostar agradece.
    Amigo parabéns pelo script tenho um aqui que pega e separa a data talvez te ajude a ter uma idéia de como fazer com a hora.
    Código :
    [B]#Pega a data e separa mês dia e ano.[/B]
    :local date [/system clock get date]
    :local month [:pick $date 0 3]
    :local day [:pick $date 4 6]
    :local year [:pick $date 7 11]
     
    [B]#Define valor numérico do mês.[/B]
    :if ([$month] = "jan") do={ :set month "01" }
    :if ([$month] = "feb") do={ :set month "02" }
    :if ([$month] = "mar") do={ :set month "03" }
    :if ([$month] = "apr") do={ :set month "04" }
    :if ([$month] = "mai") do={ :set month "05" }
    :if ([$month] = "jun") do={ :set month "06" }
    :if ([$month] = "jul") do={ :set month "07" }
    :if ([$month] = "aug") do={ :set month "08" }
    :if ([$month] = "sep") do={ :set month "09" }
    :if ([$month] = "out") do={ :set month "10" }
    :if ([$month] = "nov") do={ :set month "11" }
    :if ([$month] = "des") do={ :set month "12" }

    Talvez a primeira parta do script "#Pega a data e separa mês dia e ano." seja o que te interesse pois ai da pra você ver como separa a data por mês, dia e ano. Sendo assim você também pode separar a hora por hora, minutos e segundos.



  5. Citação Postado originalmente por minelli Ver Post
    Amigo parabéns pelo script tenho um aqui que pega e separa a data talvez te ajude a ter uma idéia de como fazer com a hora.
    Código :
    [B]#Pega a data e separa mês dia e ano.[/B]
    :local date [/system clock get date]
    :local month [:pick $date 0 3]
    :local day [:pick $date 4 6]
    :local year [:pick $date 7 11]
     
    [B]#Define valor numérico do mês.[/B]
    :if ([$month] = "jan") do={ :set month "01" }
    :if ([$month] = "feb") do={ :set month "02" }
    :if ([$month] = "mar") do={ :set month "03" }
    :if ([$month] = "apr") do={ :set month "04" }
    :if ([$month] = "mai") do={ :set month "05" }
    :if ([$month] = "jun") do={ :set month "06" }
    :if ([$month] = "jul") do={ :set month "07" }
    :if ([$month] = "aug") do={ :set month "08" }
    :if ([$month] = "sep") do={ :set month "09" }
    :if ([$month] = "out") do={ :set month "10" }
    :if ([$month] = "nov") do={ :set month "11" }
    :if ([$month] = "des") do={ :set month "12" }

    Talvez a primeira parta do script "#Pega a data e separa mês dia e ano." seja o que te interesse pois ai da pra você ver como separa a data por mês, dia e ano. Sendo assim você também pode separar a hora por hora, minutos e segundos.
    Boa idéia, vou atualizar o script acima para melhorar para o pessol aê, valeu.






Tópicos Similares

  1. Controle de banda por horário
    Por pelicanoso no fórum Redes
    Respostas: 7
    Último Post: 04-09-2011, 21:03
  2. Controle de Banda por Horario
    Por wirelessouza no fórum Redes
    Respostas: 35
    Último Post: 22-07-2010, 06:53
  3. Controle de Banda por horario
    Por Keslleykyk no fórum Redes
    Respostas: 2
    Último Post: 16-11-2007, 07:20
  4. controle de banda por horário
    Por denaum no fórum Redes
    Respostas: 0
    Último Post: 19-07-2007, 13:08
  5. Controle de banda por horário hotspot
    Por fabricioigor no fórum Redes
    Respostas: 17
    Último Post: 06-02-2007, 11:31

Visite: BR-Linux ·  VivaOLinux ·  Dicas-L