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.
#####################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#########################
transformar maiúsculas em minuscula e vice-versa
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
Nenhum comentário foi encontrado.
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (20)
Alguém pode me ajudar porfavor como executar comandos ao iniciar no i3... (1)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba