Controle de banda individual com shaper
Publicado por Denilson Martins (última atualização em 24/10/2014)
[ Hits: 5.065 ]
Homepage: www.vivaolinux.com.br
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
Shell Script - para configurações de Vlans Cisco.
Script para start,stop de .jar
soma e multiplicação de parametros
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (3)
Como desinstalar o GIMP? [RESOLVIDO] (1)