Gerenciamento de clientes com cbq,squid e firewall no kurumin.

Publicado por clelton souza silva 06/06/2007

[ Hits: 6.899 ]

Download squid_control




Ggerenciamento de clientes com cbq, squid e firewall no kurumin.

  



Esconder código-fonte

#!/bin/sh
#criado por clelton souza ([email protected])

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  

Scripts recomendados

mountcp1.sh

Gerenciamento do Samba com Dialog

Biblioteca de funções de manipulação de arquivos CSV para shell script

slackpigs - veja os pacotes que mais ocupam espaço no Slackware

Calculadora em phyton


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário