Unificando arquivos de bloqueio e liberação no squid
Publicado por RBA OMNQF 07/05/2007
[ Hits: 5.515 ]
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#########################
Obter ip a partir de um NO-IP ou DYNDNS e atualizar o endereço do MUNIN MESTRE em um nó linux.
Um super limpador do sistema KDu
Nenhum comentário foi encontrado.
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Como converter imagens PNG/JPEG para SVG em linha de comando
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux
[AJUDA] Problemas ao atualizar BIOS da Gigabyte B550M K rev. 1.1 — “RO... (4)
Inicializaçao lenta (alguns processos rodando) Debian 11 Bullseye [RES... (2)
Erro na atualização dos pacotes (6)