Gerenciamento de clientes com cbq,squid e firewall no kurumin.
Publicado por clelton souza silva 06/06/2007
[ Hits: 7.376 ]
Ggerenciamento de clientes com cbq, squid e firewall no kurumin.
#!/bin/sh
#criado por clelton souza (cleltonss@hotmail.com)
atualiza () {
service squid stop
service squid reload
service squid start
service kurumin-firewall restart
/etc/sysconfig/cbq/./cbq.init compile
/etc/sysconfig/cbq/./cbq.init restart
cliente=""
ip=""
mac=""
tipoc=""
del_cli=""
busca_cli=""
exclusao=""
tipocliente=""
palavra=""
lista=""
ip64=""
}
velocidade(){
ip64=$(dialog --stdout --inputbox "Defina o endereço de IP:" 0 0)
echo $ip64 >> /lista/rede
velo1=$(dialog --stdout --inputbox "Defina a velocidade de download para o IP $ip64 :" 0 0)
velo2=$(dialog --stdout --inputbox "Defina a velocidade de upload para o IP $ip64 :" 0 0 )
x=1
x=`expr ${x} + 1`
info="`echo "$ip64" | sed -e 's/\//_/g'`_"$velo1"Kbits_eth0"
echo "
# cbq-0${x}.${info}
DEVICE=eth0,10Mbit,1Mbit
RATE="$velo1"Kbit
WEIGHT=8Kbit
PRIO=5
RULE=$ip64,
" >> /etc/sysconfig/cbq/cbq-0${x}.${info}
# Regra de Limite Interface Eth1
x=`expr ${x} + 1`
info="`echo "$ip64" | sed -e 's/\//_/g'`_"$velo2"Kbits_eth1"
echo "
# cbq-0${x}.${info}
DEVICE=eth1,10Mbit,1Mbit
RATE="$velo2"Kbit
WEIGHT=8Kbit
PRIO=5
RULE=$ip64
" >>/etc/sysconfig/cbq/cbq-0${x}.${info}
rm /lista/rede
atualiza
}
excluir(){
if [ "$del_cli" == "" ]; then
dialog --stdout --msgbox "O campo está em branco. Esta operação será cancelada." 0 0
else
`cat /etc/squid/acesso* | grep -i $del_cli > /tmp/busca` &&
dialog --stdout --title "DADOS DOS CLIENTES QUE SERÃO EXCLUÍDOS" --textbox /tmp/busca 0 0
dialog --stdout --yesno "CONFIRMA A EXCLUSÃO DO CLIENTE?" 0 0
if [ $? = 0 ]; then
`cat /etc/squid/acesso_restrito | grep -v $del_cli > /etc/squid/acesso_restrito`
`cat /etc/squid/acesso_total | grep -v $del_cli > /etc/squid/acesso_total`
`cat /etc/squid/acesso_dados.txt | grep -v $del_cli > /etc/squid/acesso_dados.txt`
`cat /etc/squid/acesso_ip | grep -v $del_cli > /etc/squid/acesso_ip`
atualiza
dialog --stdout --msgbox "O Cliente foi excluído com sucesso!" 0 0
else
/etc/squid/squid_reload
fi
fi;
}
excluirvelo () {
del_velo=$(dialog --stdout --inputbox "Digite o IP do cliente:" 0 0)
`find /etc/sysconfig/cbq/ | grep -i $del_velo > /tmp/busca` &&
dialog --stdout --title "DADOS DOS CLIENTES QUE SERÃO EXCLUÍDOS" --textbox /tmp/busca 0 0
dialog --stdout --yesno "CONFIRMA A EXCLUSÃO DO CLIENTE?" 0 0
if [ $? = 0 ]; then
rm /etc/sysconfig/cbq/cbq*$del_velo*
# | grep -i $del_velo
#`cat /etc/sysconfig/cbq/* | grep -v $del_velo > /etc/sysconfig/cbq/*`
#`cat /etc/sysconfig/cbq/* | grep -v $del_velo > /etc/sysconfig/cbq/*`
atualiza
dialog --stdout --msgbox "O Cliente foi excluído com sucesso!" 0 0
else
/etc/squid/squid_reload
fi
}
adicionar_total () {
echo "$ip" >> /etc/squid/acesso_total
echo "iptables -t filter -A FORWARD -d 0/0 -s $ip -m mac --mac-source $mac -j ACCEPT" >> /etc/squid/acesso_ip
echo "iptables -t filter -A FORWARD -d $ip -s 0/0 -j ACCEPT" >> /etc/squid/acesso_ip
echo "iptables -t filter -A INPUT -s $ip -d 0/0 -m mac --mac-source $mac -j ACCEPT" >> /etc/squid/acesso_ip
echo "iptables -t nat -A POSTROUTING -s $ip -o eth0 -j MASQUERADE" >> /etc/squid/acesso_ip
echo $cliente";"$ip";"$mac";"$end";"$mail";"$tel >> /etc/squid/acesso_dados.txt
atualiza
dialog --stdout --msgbox "O Cliente foi adicionado com sucesso!" 0 0
}
adicionar_restrito () {
echo "$ip" >> /etc/squid/acesso_restrito
atualiza
dialog --stdout --msgbox "O Cliente foi adicionado com sucesso!" 0 0
}
#dialog --msgbox "Verificar se o erro que está acontecendo na hora de excluir dados no meio de um alista é por causa do comando /etc/squid/squid_control, que reabre o form. Criar uma variável com o nome início, onde as variáveis são zeradas e substituir dos os /etc/squid/squid_config" 0 0
abertura=$(dialog --stdout --backtitle "SQUID CONTROL VERSÃO 0.1" --title 'MENU PRINCIPAL' --menu "Controle do Squid Proxy - Radio Connect" 0 0 0 1 'ADICIONAR CLIENTE' 2 'REMOVER CLIENTE' 3 'VISUALIZAR CLIENTES' 4 'ADICIONAR PALAVRAS (BLOQUEIOS/EXCEÇÕES)' 5 'REMOVER PALAVRAS (BLOQUEIOS/EXCEÇÕES)' 6 'VISUALIZAR (BLOQUEIOS/EXCEÇÕES)' 7 'TESTE DE CONEXÃO' 8 'Controle de Banda' 9 'Listar conectados' 0 'FECHAR')
#########################################################################
if [ "$abertura" == '1' ]; then
cliente=$(dialog --stdout --inputbox "Digite o NOME do cliente: " 0 0)
ip=$(dialog --stdout --inputbox "Digite o IP do cliente:" 0 0)
mac=$(dialog --stdout --inputbox "Digite o MAC do cliente:" 0 0)
tel=$(dialog --stdout --inputbox "Digite o telefone do cliente:" 0 0)
end=$(dialog --stdout --inputbox "Digite o endereco do cliente:" 0 0)
mail=$(dialog --stdout --inputbox "Digite o e-mail do cliente:" 0 0)
tipoc=$(dialog --stdout --menu "Escolha o tipo de acesso para o cliente: $cliente" 0 0 0 1 'Acesso total à internet' 2 'Acesso restrito à internet')
# CHECANDO CAMPOS EM BRANCO
if [ "$cliente" == "" ]; then
dialog --stdout --msgbox "O nome do cliente está em branco. Tente novamente." 0 0
/etc/squid/squid_control
elif [ "$ip" == "" ]; then
dialog --stdout --msgbox "O IP do cliente está em branco. Tente novamente." 0 0
/etc/squid/squid_control
elif [ "$mac" == "" ]; then
dialog --stdout --msgbox "O MAC do cliente está em branco. Tente novamente." 0 0
/etc/squid/squid_control
elif [ "$tipoc" == "" ]; then
dialog --stdout --msgbox "O tipo de acesso do cliente está em branco. Tente novamente." 0 0
/etc/squid/squid_control
else
if [ "$tipoc" == '1' ]; then
adicionar_total
elif [ "$tipoc" == '2' ]; then
adicionar_restrito
fi;
fi
/etc/squid/squid_control
#########################################################################
elif [ "$abertura" == '2' ]; then
exclusao=$(dialog --stdout --menu "BUSCA DE CLIENTES PARA EXCLUSAO:" 0 0 0 1 'POR IP' 2 'POR MAC' 3 'PESQUISAR NOME')
if [ "$exclusao" == '1' ]; then
del_cli=$(dialog --stdout --inputbox "Digite o IP do cliente:" 0 0)
excluir
elif [ "$exclusao" == '2' ]; then
del_cli=$(dialog --stdout --inputbox "Digite o MAC do cliente:" 0 0)
excluir
elif [ "$exclusao" == '3' ]; then
busca_cli=$(dialog --stdout --inputbox "Digite o nome do cliente ou ou apenas parte dele." 0 0)
`cat /etc/squid/acesso* | grep -i $busca_cli > /tmp/busca` &&
dialog --stdout --textbox /tmp/busca 0 0
fi
/etc/squid/squid_control
#########################################################################
elif [ "$abertura" == "3" ]; then
tipocliente=$(dialog --stdout --menu "Escolha o tipo de clientes" 0 0 0 1 'Clientes com acesso total à internet' 2 'Clientes com acesso restrito à internet')
if [ "$tipocliente" == '1' ]; then
dialog --textbox /etc/squid/acesso_dados.txt 0 0
elif [ "$tipocliente" == '2' ]; then
dialog --textbox /etc/squid/acesso_restrito 0 0
fi;
/etc/squid/squid_control
########################################################################
elif [ "$abertura" == "4" ]; then
# tipopalavra=$(dialog --stdout --menu "Escolha a lista que deseja adicionar palavras:" 0 0 0 1 'BLOQUEIOS' 2 'EXCEÇÕES')
#
# if [ "$tipopalavra" == '1' ]; then
# palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja adicionar à lista de bloqueios: " 0 0)
# echo "$palavra" >> /etc/squid/proibido
# atualiza
# elif [ "$tipopalavra" == '2' ]; then
# palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja adicionar à lista de exceções: " 0 0)
# echo "$palavra" >> /etc/squid/liberado
# atualiza
# fi
/etc/squid/squid_control
########################################################################
elif [ "$abertura" == "5" ]; then
tipopalavra=$(dialog --stdout --menu "Escolha a lista que deseja remover palavras:" 0 0 0 1 'BLOQUEIOS' 2 'EXCEÇÕES')
if [ "$tipopalavra" == '1' ]; then
palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja remover da lista de bloqueios: " 0 0)
`cat /etc/squid/bloqueado | grep -v $palavra > /etc/squid/bloqueado`
atualiza
elif [ "$tipopalavra" == '2' ]; then
palavra=$(dialog --stdout --inputbox "Digite a palavra que deseja remover da lista de exceções: " 0 0)
`cat /etc/squid/liberado | grep -v $palavra > /etc/squid/liberado`
atualiza
fi
/etc/squid/squid_control
#########################################################################
elif [ "$abertura" == "6" ]; then
lista=$(dialog --stdout --menu "Escolha a lista que deseja visualizar" 0 0 0 1 'Lista de palavras bloqueadas' 2 'Lista de Excessões')
if [ "$lista" == '1' ]; then
dialog --textbox /etc/squid/bloqueado 0 0
elif [ "$lista" == '2' ]; then
dialog --textbox /etc/squid/liberado 0 0
fi;
/etc/squid/squid_control
#########################################################################
elif [ "$abertura" == "7" ]; then
destino=$(dialog --stdout --inputbox "Defina o endereço de destino:" 0 0 "200.253.131.10")
quant=$(dialog --stdout --inputbox "Defina a quantidade de pings enviados:" 0 0 "10")
tamanho=$(dialog --stdout --inputbox "Defina o tamanho dos pacotes:" 0 0 "64")
dialog --infobox "Aguarde enquanto o teste é realizado." 0 0
#if [ "$destino == "" ]; then
#dialog --msgbox "O valor do destino não foi definido." 0 0
#elif [ "$tamanho == "" ]; then
#dialog --msgbox "O valor do tamanho dos pacotes não foi definido." 0 0
#elif [ "$quant == "" ]; then
#dialog --msgbox "O valor da quantidade de pacotes não foi definido." 0 0
#else
ping -c $quant -s $tamanho $destino > /tmp/testping
dialog --title "RESULTADO DO TESTE" --textbox /tmp/testping 0 0
#fi
/etc/squid/squid_control
#########################################################################
elif [ "$abertura" == "8" ]; then
tipo=$(dialog --stdout --menu "Escolha a opçao" 0 0 0 1 'Cadastrar' 2 'Remover')
if [ "$tipo" == '1' ]; then
velocidade
elif [ "$tipo" == '2' ]; then
excluirvelo
fi;
/etc/squid/squid_control
#########################################################################
elif [ "$abertura" == "9" ]; then
arp -ea | more > /tmp/listaconec
dialog --title "RESULTADO DO TESTE" --textbox /tmp/listaconec 0 0
fi
/etc/squid/squid_control
elif [ "$abertura" == "0" ]; then
clear
fi
# Regras para o botão cancelar do menu principal
#clear
Inserção de máquinas no banco de dados para controle interno
Verificação e otimização do banco de dados MySQL
Pequeno sistema de backup (Rsync + SAMBA + Tar + FTP)
Nenhum comentário foi encontrado.
Como atualizar sua versão estável do Debian
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Script de montagem de chroot automatica
archlinux resolução abaixou após atualização (14)
Conselho distribuiçao brasileira (2)
Não consigo instalar distro antiga no virtualbox nem direto no hd (33)









