Unificando arquivos de bloqueio e liberação no squid
Publicado por RBA OMNQF 07/05/2007
[ Hits: 5.410 ]
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.
#####################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#########################
Gera estatísticas de tráfego de pacotes nas interfaces de um servidor linux via SNMPv3.
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Como testar Standard Hotplug Controller (1)
Trocando modo IDE por AHCI (1)
Desempenho abaixo do esperado - travadas e congelamento do sistema ope... (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta