Nada como os desafios para nos fazer acordar. Meu desafio foi criar um sistema de monitoração de performance para sistemas pré-pago. Com RRDTool na mão e perl na cabeça, lá fui eu. Não que eu seja exímio programador em Perl (ou qualquer outra linguagem), mas os sistemas de telefonia, principalmente na parte de pré-pago, usam sistemas Solaris 9.0, onde perl já vem instalado.
O resultado, já nesses gráficos, ficou além do esperado e pronto em 5 dias!!! Haja código... já sobre a documentação... essa virou parte das lendas como boi-tatá, saci pererê...
O primeiro gráfico mostra as verificações de crédito para liberar a chamada (First Interrogation), assim como os débitos (Final Report). O segundo, chamadas originadas (celular ligando para alguém) dentro da própria rede da operadora.
Dica retirada de http://www.network-theory.co.uk/docs/cvsmanual/cvs_53.html.
Em alguns trabalhos cooperativos, sempre que baixo uma versão específica do cvs, utilizando algo como "cvs checkout -r1.1 programa", acabou com um erro de "sticky tag" ao fazer o novo commit.
Pelo link acima vi que basta usar um "cvs update -A" para resolver isso.
De tempos em tempos é necessário fazer uma *faxina* na lista de discussão que administro, a [linux-br]. Alguns usuários saem da lista, outros ativam os famosos *anti-spam*, e coisas do gênero começam a atolar a lista em mensagens incômodas. Isso pode ser resolvido com uma pequena remoção desses usuários (assim que comunicados). Infelizmente alguns desses usuários optam por fazer a inscrição na lista com um mail qualquer, em geral gratuito como gmail, e fazem o redirecionamento do mesmo para seu mail de recebimento. O que ocorre é que as mensagens retornam com um mail não inscrito na lista. Para encontrar o dono da mensagem, criei alguns script, dois na realidade.
Uma vez que não sou administrador do servidor de listas, não consigo simplesmente conectar e buscar a base de assinantes. Preciso solicitar a quem tem acesso shell para fazer isso. Como a CIPSGA é mantida por trabalho voluntário, nem sempre isso é rápido. Então criei um script para buscar os assinantes da lista, via web, e salvar em um arquivo:
#! /bin/sh pass_adm="senha_admin" lynx_opts="-accept_all_cookies -cookie_file=cookie -post_data" member_link="http://listas.cipsga.org.br/cgi-bin/mailman/admin/linux-br/members" file_dst="/tmp/listagem" for char in a b c d e f g h i j k l m n o p q r s t u v x y w z do for id in 0 1 2 do echo "Char=$char and ID=$id" echo "adminpw=$pass_adm" | \ lynx $lynx_opts "${member_link}?letter=$char&chunk=$id" | \ grep @ | grep "^.*\[" | sed 's/.*\]//' | \ grep -v "de .* para " >> $file_dst.$$ done done cat $file_dst.$$ | sort -u > $file_dst
Com isso cria-se a listagem de usuários.
Uma vez com a lista em mãos, falta enviar uma mensagem para cada assinante para verificar se o mesmo está ativo ou não. ?? interessante indexar o envio para saber quem é quem. O seguinte script faz o serviço:
#! /usr/bin/env python server="mail.dominio.com.br" port=25 mailfrom="Helio Loureiro" rcptto="" subject="Checagem da linux-br" import sys, smtplib try: file = open(sys.argv[1]) erro_f = open("/tmp/mail_err.lst","w") except: print "Use: %s [mails_list_file]" % sys.argv[0] sys.exit(0) id=1 for line in file: rcptto = line[:-1] print "Sending for: " + rcptto + " [" + str(id) + "]" msg = "From: " + mailfrom + "\r\n" msg += "To: " + rcptto + "\r\n" msg += "Subject: " + subject + "[" + str(id) + "]\r\n" msg += """
Essa eh uma mensagem de verificacao de inscricao da linux-br.
Favor nao responder.
./helio (BOFH)
-= Developed in Python =-
""" try: mail = smtplib.SMTP(server,port) mail.sendmail(mailfrom, rcptto, msg) mail.quit() except: print "Error sending: " + rcptto error_f.write(line) error_f.flush() id += 1 sys.exit(0)
Com isso tem-se uma forma de saber quem é quem na lista e remover os indesejados.