Controle de banda individual com shaper
Publicado por Denilson Martins (última atualização em 24/10/2014)
[ Hits: 4.879 ]
Homepage: www.compels.net
Script para implementação de controle de banda utilizando o programa shaper, para derivados Debian.
#!/bin/bash dir_controle=/etc/shaper arq_dhcp=dhcpd.conf faixa=192.168.50 menu() { clear echo "#########################################" echo "# CONTROLE DE BANDA: #" echo "# ------------------------------------- #" echo "# 1-> ADICIONAR CONTROLE A UM IP: #" echo "# 2-> REMOVER CONTROLE DE UM IP: #" echo "# 3-> LISTAR IPS CONTROLADOS: #" echo "# 0-> APLICAR CONFIGURACOES: #" echo "# QUALQUER TECLA DIFERENTE PARA SAIR: #" echo "# ------------------------------------- #" echo "# DIGITE UMA OPCAO: #" echo "#########################################" read op case $op in 1) adicionar ;; 2) remover ;; 3) listar ;; 0) aplicar ;; *) exit ;; esac } #---------------------------CRIACAO DE ARQUIVOS--------------------------------- adicionar() { clear echo "DIGITE O IP PARA SER ADICIONADO AO CONTROLE (Final do IP)." read ip echo "DIGITE A BANDA EM [kbps] (1Mbps = 128 KBps)." read banda bandabps=`expr $banda / 8` ls -las $dir_controle/*down | grep $faixa.$ip >> /dev/null if [ "$?" == '1' ] ; then nome_arquivo cria_down cria_up echo "CONTROLE AO IP [$faixa.$ip] COM [$bandabps]KBps ADICIONADO" else echo "IP [$faixa.$ip] JA CONTROLADO"; fi echo "ENTER PARA VOLTAR AO MENU" read menu } nome_arquivo() { if [ -e $dir_controle/cbq-0010-XXX.XXX.XXX.XXX-down ]; then echo "[OK]" else > $dir_controle/cbq-0010-XXX.XXX.XXX.XXX-down # Apaga o default fi ls $dir_controle/*down | awk -F "-" '{ print $2}' >> temp num=`tail -1 temp` rm -rf temp num=`expr $num + 1` num=`printf "%04d\n" $num` # completa zeros a esquerda arquivo_down=$dir_controle/cbq-$num-$faixa.$ip-down arquivo_up=$dir_controle/cbq-$num-$faixa.$ip-up } cria_down() { echo "DEVICE=eth0,100Mbit,10Mbit" >> $arquivo_down echo "RATE="$banda"Kbit" >> $arquivo_down echo "WEIGHT="$bandabps"Kbit" >> $arquivo_down echo "PRIO=5" >> $arquivo_down echo "" >> $arquivo_down echo "RULE=$faixa.$ip" >> $arquivo_down echo "" >> $arquivo_down echo "BOUNDED=yes" >> $arquivo_down echo "ISOLATED=yes" >> $arquivo_down } cria_up() { echo "DEVICE=eth0,100Mbit,10Mbit" >> $arquivo_up echo "RATE="$banda"Kbit" >> $arquivo_up echo "WEIGHT="$bandabps"Kbit" >> $arquivo_up echo "PRIO=5" >> $arquivo_up echo "" >> $arquivo_up echo "RULE="$faixa.$ip"," >> $arquivo_up echo "" >> $arquivo_up echo "BOUNDED=yes" >> $arquivo_up echo "ISOLATED=yes" >> $arquivo_up } #---------------------------CRIACAO DE ARQUIVOS--------------------------------- #---------------------------REMOCAO DE ARQUIVOS--------------------------------- remover() { clear echo "DIGITE O IP QUE PODERA SER REMOVIDO DO CONTROLE" read ip remover_down=`ls $dir_controle/*down | grep $faixa.$ip` remover_up=`ls $dir_controle/*up | grep $faixa.$ip` if [ "$?" == '0' ] ; then echo "-------------------------------------------" echo " CONTROLES ENCONTRADOS" echo "$remover_down" echo "$remover_up" echo "-------------------------------------------" echo "REMOVER CONTROLE DO IP [$faixa.$ip]? (s/n) " read resp if [ "$resp" == 's' ] ; then rm -rf $remover_down rm -rf $remover_up echo "CONTROLE DO IP [$faixa.$ip] FOI REMOVIDO!" else echo "CONTROLE DO IP [$faixa.$ip] NAO FOI REMOVIDO!" fi else echo "O IP [$faixa.$ip] NAO FOI ENCONTRADO!" fi echo "ENTER PARA VOLTAR AO MENU" read menu } #---------------------------REMOCAO DE ARQUIVOS--------------------------------- #---------------------------LISTAR DE ARQUIVOS--------------------------------- listar() { if [ -e $dir_controle/cbq-0010-XXX.XXX.XXX.XXX-down ]; then rm -rf $dir_controle/cbq-0010-XXX.XXX.XXX.XXX-down # Apaga o default fi clear echo "LISTA DE USUARIOS COM CONTROLE DE BANDA ATIVADO" echo "-----------------------------------------------" ls $dir_controle/*down >> tmp while read tmp; do ip=`echo $tmp | awk -F "-" '{ print $3 }'` banda=`cat $tmp | grep WEI | awk -F "=" '{ print $2 }'` nome=`cat $arq_dhcp | grep $ip -B 2 | head -n 1 | awk '{ print $2 }'` mac=`cat $arq_dhcp | grep $ip -B 1 | head -n 1 | awk '{ print $3 }'` printf "Usuario -> $nome \t MAC -> $mac\n" printf "IP-> $ip\tBANDA -> $banda \n" done < tmp rm -rf tmp echo "-----------------------------------------------" echo "PRESSIONE ENTER PARA RETORNAR AO MENU" read menu } #---------------------------LISTAR DE ARQUIVOS--------------------------------- #---------------------------APLICAR CONFIGURACOES------------------------------ aplicar() { echo "DESEJA APLICAR AS CONFIGURACOES? (s/n) " read resp if [ "$resp" == 's' ] ; then if [ -e $dir_controle/cbq-0010-XXX.XXX.XXX.XXX-down ]; then rm -rf $dir_controle/cbq-0010-XXX.XXX.XXX.XXX-down # Apaga o default fi echo "--------------------------" echo "APLICANDO NOVAS DEFINICOES" sleep 1 /etc/init.d/shaper restart echo "--------------------------" echo "NOVAS DEFINICOES APLICADAS " echo "ENTER PARA RETORNAR MENU" read menu else echo "--------------------------" echo "ENTER PARA RETORNAR MENU" read menu fi } #---------------------------APLICAR CONFIGURACOES------------------------------ menu
Script para verificação do JAVA configurado no PATH
Script que busca IP Livres em uma rede
script de compilação do kernel 2.6.38.8 com patch ck3 no ubuntu
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
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (14)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)