Unificando arquivos de bloqueio e liberação no squid

Publicado por RBA OMNQF 07/05/2007

[ Hits: 5.313 ]

Homepage: http://rbaomnqf.multiply.com

Download squid_acl_control_e_atu_squid_acl.sh




Um amigo me apresentou um problema há algum tempo...

Ele controla sozinho alguns servidores linux com função de firewall/proxy em pontos distantes e não estava conseguindo manter os arquivos de bloqueio/liberação iguais, gerando com isso ruído entre a matriz e a filiais.

Visando ajudá-lo, criei 2 scripts: um para buscar e unificar as informações contidas nos vários arquivos de liberação/bloqueio e outro para coloca-los nos locais corretos e reinicar o servidor proxy.

  



Esconder código-fonte

#####################Inicio do script squid_acl_control.sh######################
#!/bin/sh

#
# squid_acl_control.sh
#

#
# Em um ambiente com mais de um servidor proxy, como matriz e filiais,
# baixa os arquivos de bloqueio e liberação dos hosts e unifica, gerando
# novos arquivos que são reenviados e processados pelo script atu_squid_acl.sh,
# mantendo os mesmos bloqueios e liberações em todo o ambiente.
#

#
# Algumas dependências devem ser verificadas antes da execução deste script:
# 1º - Criar usuário de trabalho ou designar um já existente.
# 2º - Criar chaves ssh para este usuário e exportar para hosts remotos
# 
# Para facilitar as coisas, aconselho que se crie o mesmo usuário na "matriz"
# e nas "filiais".
#

#
# Variáveis de auxílio
#

# Informe aqui o endereço externo ou IP dos hosts remotos
# Ex.: D_UNI="filial1.com.br 200.xxx.xxx.xxx filial3.com.br"
D_UNI=""
# Informe aqui o endereço externo ou IP do host onde este script
# está sendo executado
# Ex.: F_UNI="matriz.com.br"
F_UNI=""
# Informe aqui o usuário a ser utilizado nas conexões remotas
# Ex.: USER="suporte"
USER=""
# Informe aqui a localização e o nome do arquivo de chave ssh
# Ex.: USER_KEY="/home/suporte/.ssh/id_dsa"
USER_KEY=""
# Variável contendo uma sintaxe para o scp, modifique se necessário
SCP="/usr/bin/scp -p -C -i $USER_KEY"
# Variável contendo uma sintaxe para o ssh, modifique se necessário
SSH="ssh -l $USER -i $USER_KEY"
# Informe aqui o diretório de trabalho temporário. Aconselho que mantenha o
# mesmo utilizado no script squid_acl_control.sh
# Ex.: DIR_TMP="/tmp/proxy"
DIR_TMP="/home/rba/.Apoio/proxy"
# Informe aqui o diretório onde estão localizados os arquivos de bloqueio e
# liberação do squid.
# Ex.: DIR_B_L="/etc/squid/acls"
DIR_B_L="/etc/squid/acls"
# Informe aqui o sufixo dos arquivos de bloqueio e liberação
# Ex.: SUF_B_L="txt"
SUF_B_L=""
# Informe aqui o nome do arquivo de bloqueio sem sufixo
# Ex: ARQ_B="bloqueados"
ARQ_B=""
# Informe aqui o nome do arquivo de liberação sem sufixo
# Ex: ARQ_L="liberados"
ARQ_L=""

#
# Prepara ambiente para a unificação
#

test -d "$DIR_TMP" && rm -rf "$DIR_TMP"

mkdir "$DIR_TMP"

test -d "$DIR_TMP" || mkdir "$DIR_TMP"

#
# Pega os arquivos do próprio host para unificação
#

cp $DIR_B_L/$ARQ_L.$SUF_B_L $DIR_TMP/$ARQ_L`date +'%Y%m%d%H%M%S'`.$SUF_B_L
cp $DIR_B_L/$ARQ_B.$SUF_B_L $DIR_TMP/$ARQ_B`date +'%Y%m%d%H%M%S'`.$SUF_B_L
sleep 5

#
# Conecta nas lojas e pega os arquivos para unificação
#

for FONTE in $D_UNI
do
   $SCP $USER@$FONTE:$DIR_B_L/$ARQ_L.$SUF_B_L $DIR_TMP/$ARQ_L`date +'%Y%m%d%H%M%S'`.$SUF_B_L
   $SCP $USER@$FONTE:$DIR_B_L/$ARQ_B.$SUF_B_L $DIR_TMP/$ARQ_B`date +'%Y%m%d%H%M%S'`.$SUF_B_L
   sleep 5
done

#
# Cria arquivos unificados
#

#
# Move-se para diretório de trabalho
#
cd $DIR_TMP
#
# Gera liberados temporário, anexando todos os arquivos colhidos
#
for T_LIB in "`ls $ARQ_L*`"
do
   cat $T_LIB >> $ARQ_L.$$
done
#
# Retira duplicidades, gerando novo liberados unificado
#
sort -u $ARQ_L.$$ > $ARQ_L.new
#
# Gera bloqueados temporário, anexando todos os arquivos colhidos
#
for T_BLO in "`ls $ARQ_B*`"
do
   cat $T_BLO >> $ARQ_B.$$
done
#
# Retira duplicidades, gerando novo bloqueados unificado
#
sort -u $ARQ_B.$$ > $ARQ_B.new

#
# Conecta nas lojas e envia novos arquivos unificados
#

cd $DIR_TMP

for DESTINO in $D_UNI
do
   $SSH $DESTINO mkdir $DIR_TMP
   $SCP *.new $USER@$DESTINO:$DIR_TMP
done
#######################Fim do script squid_acl_control.sh#######################
#######################Inicio do script atu_squid_acl.sh########################
#!/bin/sh

#
# atu_squid_acl.sh
#

#
# Script complementar do script squid_acl_control.sh que deve ser executado
# antes deste, no host considerado "matriz" dos arquivos a serem atualizados.
# Ele verifica a existência de novos arquivos de bloqueio/liberação unificados,
# corrige permissões, envia para o local apropriado e reinicia o squid.
#
# Este script deve ser executado como root e pode ser inserido na crontab,
# devendo ser executado alguns minutos depois do squid_acl_control.sh
#
# Algumas dependências devem ser verificadas antes da execução deste script:
# 1º - Criar usuário de trabalho ou designar um já existente.
# 2º - Criar chaves ssh para este usuário e exportar para hosts remotos
#
# Para facilitar as coisas, aconselho que se crie o mesmo usuário na "matriz"
# e nas "filiais".
#

# Variáveis de auxílio
#

# Informe aqui o diretório de trabalho temporário. Aconselho que mantenha o
# mesmo utilizado no script squid_acl_control.sh
# Ex.: DIR_TMP="/tmp/proxy" 
DIR_TMP=""
# Informe aqui o diretório onde estão localizados os arquivos de bloqueio e
# liberação do squid.
# Ex.: DIR_B_L="/etc/squid/acls"
DIR_B_L=""
# Informe aqui o sufixo dos arquivos de bloqueio e liberação
# Ex.: SUF_B_L="txt"
SUF_B_L=""
# Informe aqui o nome do arquivo de bloqueio sem sufixo
# Ex: ARQ_B="bloqueados"
ARQ_B=""
# Informe aqui o nome do arquivo de liberação sem sufixo
# Ex: ARQ_L="liberados"
ARQ_L=""

#
# Inicio
#

#
# Verifica a existência do diretório temporário
#
if [ -d "$DIR_TMP" ]
then
   cd "$DIR_TMP" 
   #
   # Verifica a existêcia do 2 arquivos novos
   #
   if [ -f $ARQ_L.new -a -f $ARQ_B.new ]
   then
      #
      # Corrige permissões
      #
      chown root.root *.new
      chmod 644 *.new
      #
      # Faz backup dos arquivos atuais
      #
      cp -rpfa $DIR_B_L/$ARQ_L.$SUF_B_L $DIR_B_L/$ARQ_L.old
      cp -rpfa $DIR_B_L/$ARQ_B.$SUF_B_L $DIR_B_L/$ARQ_B.old
      #
      # Copia arquivos novos para local apropriado
      #
      cp -rpfa $ARQ_L.new $DIR_B_L/$ARQ_L.$SUF_B_L
      cp -rpfa $ARQ_B.new $DIR_B_L/$ARQ_B.$SUF_B_L
      #
      # Reinicializa o squid
      #
      service squid restart >/dev/null 2>&1
   fi   
   cd
   #
   # Promove a limpeza da área de trabalho
   #
   rm -rf "$DIR_TMP"
fi
#########################Fim do script atu_squid_acl.sh#########################

Scripts recomendados

transformar maiúsculas em minuscula e vice-versa

Conecção banda larga!

Compara colunas e mostra a maior

Fazer backup de todas base de dados no PostgreSQL

Script de instalação do Xorg 7.2 modificado para processadores AMD64


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts