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." }