Cadastro Regras de Controle de Banda - CBQ
Publicado por Fábio Melo 29/09/2008
[ Hits: 8.046 ]
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 #----------------------------------------------
Instalação automática do Nagios
iptables geral com roteamento de portas
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI