squidclean.sh
Script para fazer limpeza dos diretórios de cache e dos arquivos de log (do Squid, claro :).
Como ele roda de modo não interativo, é ideal para ser colocado no crontab.
Como ele roda de modo não interativo, é ideal para ser colocado no crontab.
Descrição
Script para fazer limpeza dos diretórios de cache e dos arquivos de log (do Squid, claro :).
Como ele roda de modo não interativo, é ideal para ser colocado no crontab.
Como ele roda de modo não interativo, é ideal para ser colocado no crontab.
#!/bin/bash
# Autor: Edson G. de Lima
# Mail: Xxoin[thanks]yahoo.com.br
# Edite as variáveis abaixo conforme seu Sistema:
# Declarando as variáveis:
# ------------------------
# Path do Squid:
SQUID=/usr/sbin/squid
# Path do squid.conf
SQUIDCONF=/etc/squid/squid.conf
# Path do Sarg
SARG=/usr/bin/sarg
# Arquivo que será gerado com os logs da inicialização do Squid:
LOGSTART=/root/squid.txt
# Processo copy do Squid:
SQUIDPROC=$(ps -ax | grep \(squid\) | head -1 | cut -d' ' -f2)
# Diretório raíz do cache do Squid:
DIRCACHE=$(grep "cache_dir ufs /" $SQUIDCONF | cut -df -f2- | cut -d' ' -f2)
# Arquivo de log do Squid:
ARQCACHE=$(grep "cache_log /" $SQUIDCONF | cut -dg -f2- | cut -d' ' -f2)
# Arquivo de histórico do cache do Squid:
ARQSTORE=$(grep "cache_store_log /" $SQUIDCONF | cut -dg -f2- | cut -d' ' -f2)
# Arquivo de logs de acesso ao Squid:
ARQACCESS=$(grep "cache_access_log /" $SQUIDCONF | cut -dg -f2- | cut -d' ' -f2)
# Arquivo .pid do Squid:
PID=$(grep "pid_filename /" $SQUIDCONF | cut -de -f3- | cut -c2-)
# Declarando a função para limpar o cache:
# ----------------------------------------
CLEAN()
{
if [ $DIRCACHE != /var/spool/squid -a $DIRCACHE != /var/cache/squid ] || [ $DIRCACHE = ]; then
echo
echo Este e-mail foi gerado pelo script squidclean.sh pelo seguinte motivo: \
Não foi encontrado no squid.conf, o local dos Diretórios de Cache! \
Corrija esta situação, editando a TAG \"cache_dir\" no squid.conf \
com o caminho dos diretórios de cache.\
Se esta TAG estiver correta no squid.conf, edite a variável DIRCACHE \
do script squidclean.sh, com o caminho apontado no seu squid.conf. \
Nada foi feito... | mail root
echo
exit 0
fi
# Parando o Squid:
kill $SQUIDPROC
# Forçando a parada do Squid:
killall -9 squid
# Forçando a remoção do PID do Squid:
if [ -e $PID ]; then
rm -f $PID
fi
# Gerando relatório com o Sarg:
if [ -e $SARG ]; then
$SARG -d $(date +%d/%m/%Y)
fi
# Limpando os arquivos de log:
cat /dev/null > $ARQCACHE
cat /dev/null > $ARQACCESS
cat /dev/null > $ARQSTORE
# Removendo os diretórios de cache:
rm -rf $DIRCACHE/*
# Reiniciando o Squid:
if [ -e /etc/init.d/squid ]; then
/etc/init.d/squid start
else
# REcriando os diretórios de cache:
$SQUID -z
$SQUID -D -sYC
chmod 755 -R $ARQCACHE
fi
# Gerando log da inicialização:
PROCNOVO=$(ps -ax | grep \(squid\) | head -1 | cut -d' ' -f2)
echo $(date) > $LOGSTART
echo Veja abaixo os logs de inicialização do Squid: >> $LOGSTART
echo >> $LOGSTART
echo >> $LOGSTART
cat /var/log/messages | grep squid >> $LOGSTART
echo >> $LOGSTART
cat $ARQCACHE >> $LOGSTART
echo >> $LOGSTART
echo >> $LOGSTART
echo Os dois números abaixo devem ser iguais. >> $LOGSTART
echo >> $LOGSTART
# Mostrando o processo copy-squid:
echo O processo cópia do Squid é: $PROCNOVO >> $LOGSTART
# Listando o -PID- do Squid:
echo O conteúdo do arquivo squid.pid é: $(cat $PID) >> $LOGSTART
echo >> $LOGSTART
}
# Executa função CLEAN:
CLEAN
exit