Pular para o conteúdo

POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS EM TODAS AS PASTAS DE UM USUÁRIO

Apaga as mensagens de todas as pastas do usuário dado como entrada com mais de 90 dias, guardando as mensagens em um arquivo chamado .apagadas.
Alessandro Dias diaspcf
Hits: 3.774 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Apaga as mensagens de todas as pastas do usuário dado como entrada com mais de 90 dias, guardando as mensagens em um arquivo chamado .apagadas.
Download delete_user_date_90.sh Enviar nova versão

Esconder código-fonte

#!/bin/sh
#
###############################################################################
#   Script DELETE_USER_DATE_90.SH v1.0                                        #
#                                                                             #
#  Autor: Alessandro Dias                                                     #
###############################################################################
#
BASEDIR=/var/mail
clear
echo "*********************************************************************************************"
echo "*                                  Programa DELETE_USER_DATE_90 1.0                         *"
echo "*********************************************************************************************"
echo "Autor: Alessandro Dias"
echo "---------------------------------------------------------------------------------------------"
USERNAME=$1  # colhe o nome do usuario
if [ "$USERNAME" != "" ]; 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
  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
  DIA=`echo $VALOR_TMP | cut -d " " -f 5`
  ANO=`echo $VALOR_TMP | cut -d " " -f 7`
  if [ "$ANO" = "UTC" ]; then
    ANO=`echo $VALOR_TMP | cut -d " " -f 8`
  fi 
  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
l=`expr $l \+ 1`
ARQUIVO=`echo $ARQUIVOS | cut -d " " -f $l`
done
else 
  echo -e "\nEntre com a sintaxe correta do comando:\n./delete_user_date_90.sh <nome_usuario>\n" 
fi

Barra de Progresso com Shell Script

Ispeed v1.1 - Medidor de velocidade de download

iptables para cyber

Envio de SMS via Nagios

Copia arquivos distribuidos em pastas diferentes para uma única pasta.

#1 Comentário enviado por diaspcf em 07/05/2007 - 15:23h
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.