Public feed #723138

wkk

public text v1 · immutable
Raw Edit
·published 2007-10-02 15:29 UTC
rendered paste body
function relatorio()
{
      # Consigo ler o log ?
      if [ ! -r $LOGFILE ]; then
              echo "Arquivo de log incorreto - $LOGFILE"
              exit 2
      fi

      # Limpando o log
      sed "/\(delivered\ to\ m\|queue\ active\|$TAG$\)/!d" $LOGFILE > $LOG

      # Criando um arquivo com os ID's das mensagens e respectivos tamanhos
      awk '$8~/^size=/{SIZE=gensub(/[^0-9]/,"","G",$8)/1024; printf "%s%.2f\n", $6,SIZE}' $LOG | sort -u > $IDSIZE

      # Filtrando o log
      sed "/$TAG$/!d" $LOG > $LOG.tmp
      mv $LOG.tmp $LOG

      # Apagando o arquivo de hoje, para evitar duplicacao
      rm -f $DATAFILE

      # Gerando o arquivo de dados
      while IFS=$: read ID SIZE; do
         #awk -v SIZE="${SIZE//,/.}Kb" '{print DT=$2"/"$1"|HR="$3"|AS="gensub(/.*Subject: (.*) from.*from.*$/,"\\1",1)"|DE="gensub(/^.*from=<([[:alnum:]@._-]+)>.*$/,"\\1",1)"|PR="gensub(/^.*to=<([[:alnum:]@._-]+)>.*$/,"\\1",1)"|TM="SIZE}' <(sed -n "/$ID.*$TAG/{p;q}" $LOG)

         # Teste com sed
         #LINHA="$(sed -n "/$ID.*$TAG$/{p;Q}" $LOG)"
         LINHA="$(ed -s $LOG <<<"/${ID}.*${TAG}$/"$'p\nd\nw\nq' 2>&-)"
         LINHA2="$(sed -n "s/\(...\)\ \([0-9]\{1,2\}\)\ \([0-9:]\+\).*Subject:\(.*\)\ from\ .*from=<\([0-9A-Za-z.@=\+\*_-]*\)>.*$/DT=\2\/\1\|HR=\3\|AS=\4\|DE=\5\|PR=/p" <<< $LINHA)"
         END="${LINHA2}$(sed -n "s/^.*to=<\([0-9A-Za-z._=-@]*\)>.*$/\1\|TM=${SIZE}Kb/p" <<< $LINHA)"
         [ ! -z "$END" ] && echo "$END" >> $DATAFILE.tmp

      done < $IDSIZE

      rm -f $LOG $IDSIZE

      # Removendo os caracteres malucos do relatorio se houver PHP
      if type -a php >/dev/null 2>&1; then
         php -f /usr/libexec/post-la/convert.php $DATAFILE.tmp > $DATAFILE
         rm -f $DATAFILE.tmp
      else
         mv $DATAFILE.tmp $DATAFILE
      fi

      YEAR="$(date +%Y)"
      sed -i "s#\([0-9]\{1,2\}\)\/Jan#\1\/01/$YEAR#;s#\([0-9]\{1,2\}\)\/Feb#\1\/02/$YEAR#;s#\([0-9]\{1,2\}\)\/Mar#\1\/03/$YEAR#;s#\([0-9]\{1,2\}\)\/Apr#\1\/04/$YEAR#;s#\([0-9]\{1,2\}\)\/May#\1\/05/$YEAR#;s#\([0-9]\{1,2\}\)\/Jun#\1\/06/$YEAR#;s#\([0-9]\{1,2\}\)\/Jul#\1\/07/$YEAR#;s#\([0-9]\{1,2\}\)\/Aug#\1\/08/$YEAR#;s#\([0-9]\{1,2\}\)\/Sep#\1\/09/$YEAR#;s#\([0-9]\{1,2\}\)\/Oct#\1\/10/$YEAR#;s#\([0-9]\{1,2\}\)\/Nov#\1\/11/$YEAR#;s#\([0-9]\{1,2\}\)\/Dec#\1\/12/$YEAR#" $DATAFILE

      # Acertando as permissoes para que o apache possa ler o arquivo
      chown $WWWUSER.root $DATAFILE
      chmod 0400 $DATAFILE

      echo "Relatorio gerado com sucesso."
}