Cadastro Regras de Controle de Banda - CBQ
Publicado por Fábio Melo 29/09/2008
[ Hits: 8.354 ]
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
#----------------------------------------------
slacklibre - Seu Slackware 100% Livre
Script para desligar o servidor
Kernel 4.0 para Ubuntu, Linux Mint, Lubuntu e derivados
Limpando cache do Squid (Baseado em Debian)
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Conky não mostra temperaturas da CPU no notebook (7)
archlinux resolução abaixou após atualização (17)
Estou com um problema no meu desktop do ubuntu (2)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (0)









