[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/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Contribuição: Script para estatísticas no mailman,
Davidson Rodrigues Paulo <=