Controle de banda individual com shaper
Publicado por Denilson Martins (última atualização em 24/10/2014)
[ Hits: 4.866 ]
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
Automatizar o controle de um servidor de compartilhamentos Samba
Script para fazer download no rapidshare com conta premium
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Melhorando a precisão de valores flutuantes em python[AJUDA] (7)
SysAdmin ou DevOps: Qual curso inicial pra essa área? (4)
É cada coisa que me aparece! - não é só 3% (4)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta