Caros,
Uma das minhas maiores dificuldades em relação a administração do proxy (
SQUID) sempre foi ter que ficar analisando os relatórios de utilização de internet (
SARG). Na maioria das vezes os meus relatórios tinham mais de 1.000 linhas de sites visitados. Imagine você verificando um por um. É de enlouquecer!
Lendo muitos posts e matérias sobre a utilização de alguns comandos para coletar palavras em determinados arquivos, resolvi da uma paradinha e escrever meu script. Vocês não tem noção como isso facilitou a minha vida.
Qual a função deste script?
Fazer um append das informações que deseja bloquear no arquivo pré-existente em seu Squid. 
Como funciona o script?
-  Primeiro você construirá uma lista de palavras que deseja rastrear em seu log;
-  Iniciará a varredura nos arquivos de log do Squid (access.log, access.log.1...) conforme escolhido pelo usuário;
-  Coletará os sites com as palavras pré-estabelecidas pelas palavras;
-  Listará todos os sites encontrados;
-  Incluirá os sites no arquivo já existente e os bloqueará. 
O que será necessário:
Bom, programei este arquivo visualizando o meu ambiente, que é baseado no 
Debian 4.0. Mas você pode alterá-lo quando quiser, setando os seus diretórios de preferência.
Utilizei o editor de texto mcedit (Midnight Commander). Para você implementar este pacote segue a regra:
# apt-get update
# apt-get -y install mc
Obs.: Caso opte por qualquer outro editor, basta trocar as linhas onde está o mcedit pelo de sua preferência.
Código do script:
#!/bin/bash
# Script para coletar sites atribuídos por uma determinada palavra no access.log do Squid
# Autor: Jose Carlos - 22-01-2009 - Versao 1.0
# email: sepjcarlos@hotmail.com
#Arquivo de palavras a serem procuradas
BLOCK="/usr/local/scripts/block"
#Arquivo de sites coletados conforme palavras
SITES="/usr/local/scripts/sites"
#Arquivo de bloqueio (utilizado Pelo Squid)
BLOQ="/usr/local/scripts/negados"
principal() {
    clear
    echo VERIFICA LOG PARA BLOQUEIO DE SITES
    echo -----------------------------------
    echo
    echo "Escolha a opcao "
    echo "1. Edita Arquivo de Palavras "
    echo "2. Edita Arquivo de Site " 
    echo "3. Rastrear Palavras no LOG "
    echo "4. Reiniciar Squid "
    echo "0. Sair "
    echo -n "Entre com a opcao desejada ==> "
    read opcao
    echo
    case $opcao in
   1) Palavras;;
   2) Site;;
   3) Procura;;
   4) Sistema;;
   0) exit;;
   *) "Opcao desconhecida. "; echo ; principal;;
    esac
}
Palavras() {
   mcedit $BLOCK
   echo "Pressione qualquer tecla para continuar... "
   read msg
   principal
}
Site() {
   mcedit $SITES
   echo "Pressione qualquer tecla para continuar... "
   read msg
   principal
}
Procura() {
   echo "Digite o nome do Log a ser lido." 
   echo "Exemplo: access.log ou access.log.1: "
   read LOG
   if
       find /var/log/squid -name $LOG
   then
   while true
   do
       echo "Lendo o arquivo de LOG ( $LOG ). Aguarde... Esse processo pode demorar alguns minutos..."
       cat /var/log/squid/$LOG | egrep -f $BLOCK | awk '{print $7}' | sed 's/http:\/\///' | sed 's/\/.*$//' | sort | uniq > /usr/local/scripts/sites
       echo "Fim do processo de leitura. "
       echo "O arquivo encontra-se gravado com os sites que contenham a palavras"
       echo "Nao esquece de verificar o arquivo de sites para n bloquear conteudos licitos"
       echo
       echo "Pressione qualquer tecla para continuar..."
       mcedit $SITES
       echo "#### Sites gerados em "`date +%d-%m-%y`" ####" >> $BLOQ
       cat $SITES | sort -u | grep -v ^$  >> $BLOQ
       echo "Pressione qualquer tecla para continuar..."
       read msg
       principal
   done
   else
       echo "Arquivo de Log nao existe..."
       echo "Digite o nome correto..."
       echo "Pressione qualquer tecla para continuar..."
       read msg
       principal
   fi
}
Sistema() {
    echo "Reiniciando Squid: "
    echo
    squid -k reconfigure
    echo "Pressione qualquer tecla para continuar..."
    read msg
    principal
}
principal
Um abraço a todos..
Jose Carlos Oliveira