shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Contribuição: Script para estatísticas no mailman


From: Davidson Rodrigues Paulo
Subject: Contribuição: Script para estatísticas no mailman
Date: Mon, 21 Jan 2008 17:06:27 -0200

Salve!

Sou líder nacional dos Grupos de Usuários BrOffice.org e,
recentemente, foi-me solicitado o envio de um relatório de quantos
emails foram enviados mês a mês por cada lista de discussão do GUBrO
em cada Estado, uma tarefa extremamente trabalhosa de ser feita
manualmente.

Então, desenvolvi um Shell Script para analisar o histórico das listas
de discussão e extrair as estatísticas dos emails enviados mês a mês
durante todo o ano de 2007.

Considerando a quantidade de listas de discussão que utilizam Mailman,
achei que poderia ser bastante útil compartilhar a solução com os
colegas, que pode ser adaptada facilmente para extrair diversas
informações sobre os emails enviados para listas do Mailman.

Segue o script:

#!/bin/bash
#
# Contabiliza quantos emails foram enviados durante o ano de 2007
# nas listas de discussão estaduais do Grupo de Usuários BrOffice.org
#
# Esse script pode ser adaptado para extrair informações de qualquer
# lista de discussão baseada em Mailman
#
# Autor: Davidson Paulo <address@hidden>
# Versão: 1.1 - 21/01/2008
# Licença: GPL v2 ou superior

## Variáveis globais
UrlPrefix="http://listas.broffice.org";
BaseUrl="${UrlPrefix}/cgi-bin/mailman/listinfo"

## Funções
# Retorna todas as listas de discussão cujo nome
# casa com o padrão 'gubro-??'
gubroList () {
 links --dump $BaseUrl |
 grep 'gubro-..$' |
 awk '{print $2}' |
 rev | cut -d'/' -f1 | rev
}

# Define a data no formato usado pelo Mailman
# nas páginas de arquivo de emails enviados
setData () {
  Ano=$(date +%Y)
  Mes=$(($(date +%m) - 1))

  if [ $Mes -eq 0 ] ; then
    Mes=12
    Ano=$(($Ano - 1))
  fi

  Mes=$(LANG=en_US date -d ${Ano}${Mes}10 +%B)
}

# Retorna o nome do GUBrO (GUBrO-??)
gubroName () {
  echo -n 'GUBrO-'
  echo $1 | cut -d'-' -f2 | tr [a-z] [A-Z]
}

# Captura a quantidade de mensagens enviadas em
# um determinado mês
getMessages () {
  links --dump $1 | grep 'Messages:' | awk '{ print $2 }'
}

## Rotina principal
setData

for Gubro in `gubroList` ; do
  GubroName=$(gubroName $Gubro)
  Url="${UrlPrefix}/pipermail/${Gubro}/"
  Urls=$(links --dump $Url | grep "/thread\.html$" | awk '{print $2}')

  echo "=========="
  echo "$GubroName"
  echo "=========="

  HasMessages=0

  while read Url ; do
    Date=$(echo $Url | cut -d/ -f6)
    Year=$(echo $Date | cut -d- -f1)
    Month=$(echo $Date | cut -d- -f2)
    Messages=$(getMessages $Url)

    if [ -n "$Messages" ] ; then
      HasMessages=1
      echo "  * ${Month}/${Year}: $Messages mensagens"
    fi
  done < <(echo "$Urls")

  if [ $HasMessages -eq 0 ] ; then
    echo "  Nenhuma mensagem"
  fi

  echo
done

Espero que seja útil.

Um grande abraço,

-- 
Davidson Paulo
Administrador de Sistemas Linux
Certificado LPI Nível 1: LPI000132770
Líder Nacional dos Grupos de Usuários BrOffice.org
http://davidsonenatalia.blogspot.com/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]