Unificando arquivos de bloqueio e liberação no squid
Publicado por RBA OMNQF 07/05/2007
[ Hits: 5.727 ]
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#########################
Ajuste de horário e sincronismo
Ispeed v1.1 - Medidor de velocidade de download
Limpando cache do Squid (Baseado em Debian)
Testando se a conexão com a Internet está ativa
Nenhum comentário foi encontrado.
librePods: liberte seus AirPods em 2026
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Instalando e definindo as novas fontes Adwaita no GNOME
Configurar aviso da temperatura da CPU no Conky
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Conky não mostra temperaturas da CPU no notebook (15)
Após todos esses anos... youtube! (2)
archlinux resolução abaixou após atualização [RESOLVIDO] (19)
Registro do 'last&qu... errado [RESOLVIDO] (9)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (2)









