Cadastro Regras de Controle de Banda - CBQ
Publicado por Fábio Melo 29/09/2008
[ Hits: 8.313 ]
Homepage: http://www.tuxtecnologia.com.br
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
#!/bin/bash
##########################################################################
#
# Copyright (C) 2008 Fábio Melo (fabiodmf@gmail.com)
#
# 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
#----------------------------------------------
instalando o unbound dns no debian via script
Baixando e instalando o Asterisk
Bashblog v3.0 - cria um microblog em HTML5
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Trazendo de volta o Serviços em Segundo Plano no Plasma6
Desenvolvi um programa de hot corner (você colocar o mouse nos cantos)... (1)
Problema com uso do sed [RESOLVIDO] (3)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (13)









