Controle de banda individual com shaper
Publicado por Denilson Martins (última atualização em 24/10/2014)
[ Hits: 4.996 ]
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
Nmap,traceroute,ssh,ftp e nbtscan, tudo junto nesse script basicão.
Faciliando copiar DVD com 2 gravadoras pelo terminal
Bloqueando ataque de força bruta em ssh através de script bash
Trocando MAC address de placa de rede
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Como converter imagens PNG/JPEG para SVG em linha de comando
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
[AJUDA] Problemas ao atualizar BIOS da Gigabyte B550M K rev. 1.1 — “RO... (6)
Comprei thin client dell wyse tx0 3010 ele tá com Login é senha nao v... (0)