Cadastro Regras de Controle de Banda - CBQ

Publicado por Fábio Melo 29/09/2008

[ Hits: 7.550 ]

Homepage: http://www.tuxtecnologia.com.br

Download cbqu.sh




Facilita o cadastro de regras de controle de banda. Não necessita de nenhum conhecimento avançado em cbq.

Nele você define:

-velocidade download da classe
-velocidade de upload da classe
-prioridade
-endereço da classe
-interface de entrada
-interface de saida
-se a classe pode emprestar banda
-se a classe pode pegar banda emprestada
-verifica se cbq está instalado ( se não estiver o script e abortado)
-verifica se o ip-route2 está instalado ( se não estiver o script e abortado)
-verifica erros na compilacao das classes
-verifica erros no inicializacao do CBQ

  



Esconder código-fonte

#!/bin/bash
##########################################################################
#
#   Copyright (C) 2008  Fábio Melo ([email protected])
#         
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
##########################################################################
#
#   Programa usado para cadastrar regras de controle (CBQ) de banda de forma rapida e facil
#   Todos as configuracoes sao salvas no arquivo
#   
#   /etc/clientes
#
#   E os arquivos de classes dentro de 
#
#   /etc/cbq/
#
##########################################################################
#
#Inicio
#
#
#
#------------------------------------------
#Checa a presenca do IP-ROUTE2
if [ -e /sbin/tc ]
then
sleep 0
else
echo ""
echo " ip-route2 nao instalado"
echo ""
echo "Abortando!!!"
echo ""
exit
fi
#------------------------------------------
#
#
#
#------------------------------------------
#Checa a presenca do CBQ
if [ -e /etc/init.d/cbq ]
then
sleep 0
else
echo ""
echo " CBQ nao instalado ou nao presente em /etc/init.d/cbq "
echo ""
echo "Abortando!!!"
echo ""
exit
fi
#------------------------------------------
#
#
#
#Apresentacao
echo ""
echo ""
echo ""
echo "Bem vindo ao CBQU, script para adicionar regras de controle de banda de forma rapida e pratica"
echo ""
echo ""
echo ""
echo " Agora faremos algumas perguntas sobre sua nova regra, e ao final suas regras estarao prontas...:-)"
echo ""
echo ""
echo ""
#Pergunta sobre o nome da estacao
echo "Qual o nome da estacao que a regra ira se aplicar?"
read ESTACAO
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta sobre o ip da estacao
echo ""
echo "Qual o ip da estacao?"
read IP
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta sobre o valor da taxa de download
echo ""
echo "Qual o valor da conexao --Download--?"
read DOWN
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta sobre o valor da taxa de upload
echo ""
echo "Qual o valor da conexao --Upload--?"
read UP
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta sobre a prioridade
echo ""
echo "Qual a prioridade da regra (entre 1 e 8)?"
read PRIO
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta se ele pode pegar mais banda caso haja excedente
echo ""
echo "Caso haja Banda Excedente na rede, ele pode usa-la? (Responda >sim< ou >nao<)"
read PBOU
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta se deve emprestar banda caso nao esteja usando
echo ""
echo "Caso esta máquina nao use toda sua Banda, ela pode empresta-la? (Responda >sim< ou >nao<)"
read PISO
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta sobre a interface externa
echo ""
echo "Qual a sua interface de rede externa? --ex: eth1 "
read PIFACEE
#------------------------------------------
#
#
#
#------------------------------------------
#Pergunta sobre a interface interna
echo ""
echo "Qual a sua interface de rede interna? --ex: eth0 "
read PIFACEI
#------------------------------------------
#
#
#
#------------------------------------------
#Configuracao de isolated
if [ "$PISO" == "nao" ];
then
PISO=no
else
PISO=yes
fi
#------------------------------------------
#
#
#
#Configuracao de bounded
if [ "$PBOU" == "nao" ];
then
PBOU=no
else
PBOU=yes
fi
#------------------------------------------
#
#
#
#------------------------------------------
#Configuracao da taxa Download e Upload
TXD=`expr $DOWN / 8`
TXU=`expr $UP / 8`
#------------------------------------------
#
#
#
#------------------------------------------
# Verifica a existencia do arquivo "/etc/clientes"
if [ -e /etc/clientes ]
then
    ULTIMO=`tail -1 /etc/clientes`
    PCODIGO=`echo $ULTIMO | awk -F "|" '{print $1}'`
    CODIGO=`expr $PCODIGO + 1`
else
    touch /etc/clientes
    CODIGO=10
fi
#----------------------------------------------
#
#
#
#----------------------------------------------
# Adiciona a entrada ao arquivo de configuracao
echo ""00"$CODIGO|$ESTACAO|$IP|$DOWN|$TXD|$UP|$TXU|$PRIO|$PIFACEI|$PIFACEE|$PBOU|$PISO" >> /etc/clientes
#----------------------------------------------
#
#
#
#-----------------------------------------------
#apaga regras antigas ( ele criara todas de novo )
if [ -e /etc/cbq ]
then
   rm -f /etc/cbq/*
else
    mkdir /etc/cbq
fi
#-----------------------------------------------
#
#
#
#-----------------------------------------------
#adiciona os valores lidos no arquivo /etc/clientes aas variaveis usadas na criacao do cbq
LISTA=`cat /etc/clientes`
for CLIENTE in $LISTA; do
CODIGO2=`echo $CLIENTE | awk -F "|" '{print $1}'`
ESTACAO2=`echo $CLIENTE | awk -F "|" '{print $2}'`
IP2=`echo $CLIENTE | awk -F "|" '{print $3}'`
DOWN2=`echo $CLIENTE | awk -F "|" '{print $4}'`
TXD2=`echo $CLIENTE | awk -F "|" '{print $5}'`
UP2=`echo $CLIENTE | awk -F "|" '{print $6}'`
TXU2=`echo $CLIENTE | awk -F "|" '{print $7}'`
PRIO2=`echo $CLIENTE | awk -F "|" '{print $8}'`
IFACEI=`echo $CLIENTE | awk -F "|" '{print $9}'`
IFACEE=`echo $CLIENTE | awk -F "|" '{print $10}'`
BOU=`echo $CLIENTE | awk -F "|" '{print $11}'`
ISO=`echo $CLIENTE | awk -F "|" '{print $12}'`
#----------------------------------------------
#
#
#
#----------------------------------------------
# cria os arquivos usando as variaveis
UPLOAD="/etc/cbq/cbq-"$CODIGO2"."$ESTACAO2"_out"
DOWNLOAD="/etc/cbq/cbq-"$CODIGO2"."$ESTACAO2"_in"
touch $UPLOAD
touch $DOWNLOAD
#----------------------------------------------
#
#
#
#----------------------------------------------
# Da permissao de leitura aos scripts de controle de banda
chown 444 /etc/cbq/*
#----------------------------------------------
#
#
#
#----------------------------------------------
#preenche o arquivo de configuracao de upload
echo "DEVICE=$IFACEE,10Mbit,1Mbit" >> $UPLOAD
echo "RATE=$UP2""kbit" >> $UPLOAD
echo "WEIGHT=$TXU2""kbit" >> $UPLOAD
echo "PRIO=$PRIO2" >> $UPLOAD
echo "RULE=""$IP2""," >> $UPLOAD
echo "BOUNDED=$BOU" >> $UPLOAD
echo "ISOLATED=$ISO" >> $UPLOAD
#----------------------------------------------
#
#
#
#----------------------------------------------
#preenche o arquivo de configuracao de download
echo "DEVICE=$IFACEI,10Mbit,1Mbit" >> $DOWNLOAD
echo "RATE=$DOWN2""kbit" >> $DOWNLOAD
echo "WEIGHT=$TXD2""kbit" >> $DOWNLOAD
echo "PRIO=$PRIO2" >> $DOWNLOAD
echo "RULE=""$IP2" >> $DOWNLOAD
echo "BOUNDED=$BOU" >> $DOWNLOAD
echo "ISOLATED=$ISO" >> $DOWNLOAD
#----------------------------------------------
#
#
#
done
#
#
#
#----------------------------------------------
#Compila as regras
echo ""
echo "Compilando as regras..."
echo ""
sleep 2
/etc/init.d/cbq compile && COMPILE=ok
#----------------------------------------------
#
#
#
#----------------------------------------------
# Verifica erros na compilacao
if [ "$COMPILE" == "ok" ];
then
echo ""
echo "Regras Compiladas com sucesso!"
echo ""
else
echo ""
echo "Erro ao Compilar Regras!"
echo ""
fi
#----------------------------------------------
#
#
#
#----------------------------------------------
#Restarta o CBQ
echo ""
echo "Reiniciando o CBQ..."
echo ""
sleep 2
/etc/init.d/cbq restart && RESTART=ok
#----------------------------------------------
#
#
#
#----------------------------------------------
#Verifica erros no Restart
if [ "$RESTART" == "ok" ];
then
echo ""
echo "CBQ Reiniciado com sucesso!"
else
echo ""
echo "Erro ao Reiniciar CBQ!"
echo ""
fi
#----------------------------------------------

Scripts recomendados

Realizar backup automático no HD externo

Fazendo Failover entre 2 Links

Cronômetro em shell

NetScan - o seu scanner de rede!

Dicionário e tradutor baseado no Michaelis


  

Comentários
[1] Comentário enviado por danilotm em 07/10/2008 - 14:18h

Parabéns!
Me ajudou bastante.

Abraços

[2] Comentário enviado por comfaa em 10/10/2008 - 09:29h

Vlw, precisava disso


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts