Ads 468x60px

Sample text

Social Icons

Sample Text

Related Posts Plugin for WordPress, Blogger...

quinta-feira, 8 de novembro de 2012

Shell Script para SQUID (Gerenciador)

Pessoal, fiz um script para adicionar (escrever) nos arquivos de configuração do squid utilizado interface gráfica o "dialog", então para que vocês possam usar esse script deve seguir os seguintes passos.

# 1º
# Se estiver usando debian ou ubuntu
apt-get install dialog 

# 2º
# Alterar os arquivos de configuração do script de acordo com as suas acl's do squid.


liberados="/etc/squid3/ips_liberados"
senhas="/etc/squid3/senhas_usuarios"
solitaria="/etc/squid3/solitaria"

# 3º
# Copiar os script abaixo e salvar no dir do squid de preferência e dar permissão de execução ao mesmo.

chmod +x squid.sh

# 4º

./squid.sh

_______________________________________________________________________
# Obs: A função ValidaIP() não é interpretada por todas as versões do bash, se a sua versão não conseguir interpreta-la é só remover a função.




#!/bin/bash


###########ARQUIVOS E DIRETÓRIOS############

liberados="/etc/squid3/ips_liberados"
senhas="/etc/squid3/senhas_usuarios"
solitaria="/etc/squid3/solitaria"

while [ 1 ]
do

ValidaIP() {
   local numero_ip=$1

   # Suporte 'built-in' a ER's! legal... =)
   [[ $numero_ip =~ ^[0-9]{2,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]] || return 1
   
   local primeiro_octeto segundo_octeto terceiro_octeto quarto_octeto
   
   OLD_IFS=$IFS
   IFS="."
   
   set - $numero_ip
   primeiro_octeto=$1
   segundo_octeto=$2
   terceiro_octeto=$3
   quarto_octeto=$4
   
   IFS=$OLD_IFS
   
   # Checa o 2o octeto especifico de cada faixa
   case $primeiro_octeto in
      10)  [[ $segundo_octeto =~ ^0[0-9][0-9]? ]] && return 1 # Invalida tipos '0x' ou '0xx'
           (( segundo_octeto >= 0 && segundo_octeto <= 255 )) || return 1 ;;
      172) (( segundo_octeto >= 16 && segundo_octeto <= 31 )) || return 1 ;;
      192) (( segundo_octeto == 168 )) || return 1 ;;
      *) return 1
   esac
   
   # Ja que o 3o e 4o octetos sao comuns as tres faixas
   [[ $terceiro_octeto =~ ^0[0-9][0-9]? ]] || [[ $quarto_octeto =~ ^0[0-9][0-9]? ]] && return 1
   (( terceiro_octeto >= 0 && terceiro_octeto <= 255 )) || return 1
   (( quarto_octeto >= 0 && quarto_octeto <= 255 )) || return 1

}


##### FUNÇÃO PEGAR IP#########
ip (){

IP=$( dialog                                           \
   --title 'IP'   --stdout                       \
   --inputbox 'Por favor, Informe o IP:'  \
   0 0 )
}

##### FUNÇÃO PEGAR SENHA#########
senha (){

senha=$( dialog                                           \
   --title 'SENHA'   --stdout                       \
   --passwordbox 'Por favor, informa a senha:'  \
   0 0 )
}

##### FUNÇÃO PEGAR NOME#########
nome (){

NOME=$( dialog                                           \
   --title 'IP'   --stdout                       \
   --inputbox 'Por favor, o nome da pessoa:'  \
   0 0 )
}

##### FUNÇÃO MOSTRAR MSG#########
erro_validacao(){

erro=$( dialog                                            \
   --title 'ERRO'  --stdout                            \
   --msgbox 'Erro na validação de IP ou esse IP já existe no arquivo e IPs!'  \
   6 40 )
}


##### FUNÇÃO MOSTRAR MSG#########
msg(){

MSG=$( dialog                                            \
   --title 'Parabéns'  --stdout                            \
   --msgbox 'Tarefa executada com sucesso!'  \
   6 40 )
}

##### FUNÇÃO SAIR#########
sair(){

sair=$( dialog                                            \
   --title 'SAIR'  --stdout                            \
   --msgbox 'ATÉ A PRÓXIMA CARA :D!'  \
   6 40 )
}

##### FUNÇÃO MENU#########
MENU=$( dialog                                       \
   --title 'SQUID3'  --stdout                        \
   --menu 'O que deseja:'  \
   0 0 0                                     \
   LIBERAR       'Liberar IP'           \
   SOLITARIA     'Mandar para SOLITÁRIA'               \
   AUTENTICACAO  'Criar senha para AUTH' \
   SAIR 'SAIR DO SQUID' )

##### CASE #########
case $MENU in

LIBERAR) ip
if ValidaIP $IP
then
if ! cat $liberados | grep $IP
then
nome
echo "$IP # $NOME" >> $liberados
msg
else
erro_validacao

fi
else
erro_validacao
fi

;;
SOLITARIA) ip
if ValidaIP $IP
then
if ! cat $solitaria | grep $IP
then
nome
echo "$IP # $NOME" >> $solitaria
msg
else
erro_validacao

fi
else
erro_validacao
fi
;;
AUTENTICACAO) nome
     htpasswd $senhas $NOME

;;

SAIR) sair
break
;;

*)echo " Opção Inválida !" ;;

esac

done

0 comentários:

Postar um comentário