Pular para o conteúdo

POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS

Apaga as mensagens de todas as pastas dos usuários com mais de 90 dias, guardando as mensagens em um arquivo chamado .apagadas, a lista de pastas é exibida na tela. Esse script é executado diariamente.
Alessandro Dias diaspcf
Hits: 3.864 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Apaga as mensagens de todas as pastas dos usuários com mais de 90 dias, guardando as mensagens em um arquivo chamado .apagadas, a lista de pastas é exibida na tela. Esse script é executado diariamente.
Download delete_all_users_date_90.sh Enviar nova versão

Esconder código-fonte

#!/bin/sh
#
###############################################################################
#   Script DELETE_ALL_DATE_90.SH v1.0                                         #
#                                                                             #
#  Autor: Alessandro Dias                                                     #
###############################################################################
#
BASEDIR=/var/mail
clear
echo "*********************************************************************************************"
echo "*                           Programa DELETE_ALL_DATE_90 1.0                                 *"
echo "*********************************************************************************************"
echo "Autor: Alessandro Dias"
echo "---------------------------------------------------------------------------------------------"
k=24 # pula usuarios do sistema
USERNAME="teste" # inicializa USERNAME
TODOS=`cat /etc/passwd | cut -d : -f 1`
while [ "$USERNAME" != "" ]; do
  USERNAME=`echo $TODOS |cut -d " " -f $k`
  GRUPO=`groups $USERNAME |cut -d " " -f 3`
  if [ "$GRUPO" = "popusers" ]; then
    echo "                                ----- Usuário $USERNAME -----"
    echo -e "---------------------------------------------------------------------------------------------"
    ARQUIVOS=$BASEDIR/$USERNAME
    ARQUIVOS="$BASEDIR/$USERNAME"" "`ls /home/$USERNAME/mail/*`
    l=1
    ARQUIVO=`echo $ARQUIVOS | cut -d " " -f $l`

    while [ "$ARQUIVO" != "" -a "$ARQUIVO" != " " ]; do
      if [ "$USERNAME" != "" ]; then
        echo "Analizando o arquivo: $ARQUIVO"
       #Verifica as Msgs
       INICIO=1
       NLINHAS=1000
       i=0
       while [ "$INICIO" != "$NLINHAS" ]; do 
         i=`expr $i \+ 1`
         j=`expr $i \+ 1`
         LINHAS=`grep -n "From " $ARQUIVO | cut -d ":" -f 1`
         NLINHAS=`wc -l $ARQUIVO`
         NLINHAS=`echo $NLINHAS | cut -d " " -f 1`
         LINHAS="$LINHAS $NLINHAS"
         INICIO=`echo $LINHAS | cut -d " " -f $i`
         if [ "$INICIO" = "$NLINHAS" ]; then
           echo -e "---------------------------------------------------------------------------------------------"
         else
           FIM=`echo $LINHAS | cut -d " " -f $j`
           VALOR_TMP=`sed -n -e "$INICIO""p" $ARQUIVO`
           MES=`echo $VALOR_TMP | cut -d " " -f 4`
           ASSUNTO=`sed -n -e "$INICIO,$FIM""p" $ARQUIVO | grep "Subject:" | cut -d : -f 2`
           case $MES in
             Jan) MES=1 ;;
             Fev) MES=2 ;;
             Mar) MES=3 ;;
             Apr) MES=4 ;;
             Abr) MES=4 ;;
             May) MES=5 ;;
             Mai) MES=5 ;;
             Jun) MES=6 ;;
             Jul) MES=7 ;;
             Aug) MES=8 ;;
             Ago) MES=8 ;;
             Sep) MES=9 ;;
             Set) MES=9 ;;
             Oct) MES=10 ;;
             Out) MES=10 ;;
             Nov) MES=11 ;;
             Dez) MES=12 ;;
           esac
           VALOR_TMP=`sed -n -e "$INICIO""p" $ARQUIVO`
           DIA=`echo $VALOR_TMP | cut -d " " -f 5`
           ANO=`echo $VALOR_TMP | cut -d " " -f 7`
           HJ_ANO=`date +%Y`
           HJ_MES=`date +%m`
           HJ_DIA=`date +%e`
           DIF_ANO=`expr $HJ_ANO - $ANO`
           DIF_MES=`expr $HJ_MES - $MES`
           DIF_DIA=`expr $HJ_DIA - $DIA`
           TEMPO1=`expr $DIF_ANO \* 360`
           TEMPO2=`expr $DIF_MES \* 30`
           TEMPO3=$DIF_DIA
           TEMPO=`expr $TEMPO1 \+ $TEMPO2 \+ $TEMPO3`
           echo -e "\n   Mensagem $i - Data: $DIA/$MES/$ANO - $TEMPO dias - Linhas $INICIO-$FIM"
           echo -e "   Assunto: $ASSUNTO"
           if [ $TEMPO -ge 90 ]; then # se a msg tiver mais de 60 dias apagar
             if [ "$FIM" != "$NLINHAS" ]; then # se não é a ultima msg, não apaga a linha em branco
               FIM=`expr $FIM - 1`
             fi
             sed -n -e "$INICIO,$FIM""p" $ARQUIVO >> $ARQUIVO.apagadas
             echo " " >> $ARQUIVO.apagadas
             sed -e "$INICIO,$FIM""d" $ARQUIVO >> $ARQUIVO.tmp
             mv -f $ARQUIVO.tmp $ARQUIVO
             i=`expr $i - 1`
             j=`expr $j - 1`
             echo "   << Mensagem com mais de 90 dias  - APAGADA >>"
           fi
         fi
       done
     else 
       echo -e "\nEntre com a sintaxe correta do comando:\n./delete_date.sh <nome_usuario>\n" 
     fi
     l=`expr $l \+ 1`
     ARQUIVO=`echo $ARQUIVOS | cut -d " " -f $l`
   done
 fi
 k=`expr $k \+ 1`
done

Criando Autoridades Certificadoras e Certificados de Testes no Linux

Firewall simples com iptables

Biblioteca de funções de manipulação de arquivos CSV para shell script

Monitorando processo do Squid em diferentes redes

Monitore vários servidores ao mesmo tempo com Apache + shellscript

#1 Comentário enviado por diaspcf em 07/05/2007 - 15:21h
Caro Usuário,
Tente pegar o script a partir do código fonte, pois parece que o link está quebrado.
Obrigado.

Contribuir com comentário

Entre na sua conta para comentar.