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 <[EMAIL PROTECTED]> # 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/
