A Vida em Preto e Branco I - Pebrot, MSN em modo texto

Esse é o primeiro artigo de uma série que irei escrever sobre o modo texto. A série tem como objetivo principal explorar a possibilidade de usar um computador com Linux sem o uso de um servidor X. Neste artigo será tratado um excelente cliente MSN em modo texto - o Pebrot.

[ Hits: 43.494 ]

Por: Fernando de Sá Moreira em 03/01/2007 | Blog: http://lattes.cnpq.br/2269235326367932


Integrando shell scripts e o Pebrot



OBS: Não irei entrar em detalhes menores sobre shell script, considero que quem está lendo essa parte do artigo já possua conhecimento básico sobre o assunto. Todavia, deixo o seguinte link para quem deseje estudar sobre o assunto:
Essa é uma funcionalidade simples, mas extraordinária do Pebrot, ele pode executar comandos!!! Sim o Pebrot, orientado a eventos, pode executar comandos. A idéia é simples: há uma série de eventos possíveis (quando alguém conecta, quando alguém manda uma mensagem, quando alguém desconecta, etc), que, quando acontecem, acionam comandos previamente configurados!

Ainda não entendeu? Observe esse exemplo simples:

Quero saber se minha namorada tem conectado no MSN e quanto tempo ela fica conectada. Como fazer isso? Normalmente a única opção é pedir a um amigo que fique vigiando o MSN. Mas basta que ele se distraia um minuto, ou saia por algum motivo, que a vigília fica comprometida. Mas e se eu puder deixar meu cliente MSN de vigia no lugar de meu amigo?

Para implementar isso é necessário saber algumas coisas antes:
  1. Os eventos devem ser estabelecidos no arquivo de configuração do Pebrot (~/.pebrot/pebrotrc);
  2. Os eventos possíveis são:
    exec_on_msg: quando uma nova mensagem for recebida
    exec_on_new_chat: quando uma nova janela de chat for criada
    exec_on_file_recv_begin: quando uma transferência de arquivo for iniciada
    exec_on_file_recv_end: quando uma transferência de arquivo for terminada
    exec_on_pal_state_nln: quando um contato mudar de estado para 'online'
    exec_on_pal_state_change: Contato mudar de estado (para qualquer um, mas conectado)
    exec_on_pal_connected: quando um contato conectar
    exec_on_pal_disconnected: quando um contato desconectar

  3. É possível usar variáveis diferentes em cada evento. São elas:
    exec_on_msg: $passport, $user, $msg
    exec_on_new_chat: $passport, $user, $msg
    exec_on_file_recv_begin: $passport, $user, $file, $size
    exec_on_file_recv_end: $passport, $user, $file, $size
    exec_on_pal_state_nln: $passport, $user
    exec_on_pal_state_change: $passport, $user, $state
    exec_on_pal_connected: $passport, $user, $state
    exec_on_pal_disconnected: $passport, $user

Certo, agora de posse dessas informações podemos aplicar para nosso objetivo:

A sintaxe da definição dos eventos é muitos simples: <evento>= <comando>. Assim, se eu quiser criar um arquivo de log chamado 'conectaram' para registrar quem conectou no MSN posso, por exemplo, criar a seguinte linha no arquivo de configuração do Pebrot:

exec_on_pal_connected= echo "`date` $user $passport CONECTOU" >> /home/<minhapasta>/conectaram

Para complementar posso criar um outro evento que registre as desconexões e registre no mesmo arquivo:

exec_on_pal_disconnected= echo "`date` $user $passport DESCONECTOU >> /home/<minha pasta>/conectaram

Mas claro, que para deixar os resultados mais refinados - afinal eu só quero saber das movimentações da minha namorada - eu posso criar um shell script que faça o registro para mim. Então, posso criar um script assim:

#!/bin/bash

if [ $1 = "minha_namorada@hotmail.com" ]; then
  if [ $2 = "conectou" ]; then
    echo "ela CONECTOU em `date`" >> /home/<minhapasta>/namorada
  else
    echo "ela DESCONECTOU em `date`" >> /home/<minhapasta>/namorada
  fi  
fi

Salvo o arquivo como "controledenamorada", dou permissão de execução e salvo em /usr/bin. Então registro os seguintes eventos no arquivo de configuração do Pebrot:

exec_on_pal_connect= controledenamorada $passport conectou
exec_on_pal_disconnect= controledenamorada $passport desconectou

Pronto, agora no arquivo /home/<minhapasta>/namorada, só serão registradas as ações daquele passport específico.

Talvez seja interessante também que eu entre sempre como 'Aparecer Offline', afinal, não quero que ela saiba que eu estou fazendo isso. Para isso no arquivo de configuração do Pebrot deixe a seguinte opção assim:

state= HDN

Esse foi um exemplo simples do que se pode fazer usando os eventos do Pebrot, imagine-se agendando tarefas no seu computador através do MSN, mandando e-mails, ou qualquer outra tarefa, simples ou complexa. Todavia, essa função deve ser usada com muita cautela, pois pode ser muito perigosa se mal configurada.

Infelizmente o Pebrot, pelo menos na versão citada (0.8.8), ainda não tem a possibilidade de executar tarefas comandos, como por exemplo, mandar uma mensagem para um contato, ou mesmo um arquivo, através de linha de comando.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Apresentando e instalando o Pebrot
   3. Executando o Pebrot
   4. Usando o Pebrot
   5. Configurando o Pebrot
   6. Integrando shell scripts e o Pebrot
   7. Conclusão e links
Outros artigos deste autor

Usa Firefox? Expanda-o

Uma geral acerca do WindowMaker

Pensando sobre Web 2.0

Encarando o DGuitar

A vida em preto e branco II - Orpheus, música no console

Leitura recomendada

Manipulação de arquivos PDF no Linux

Montando seu Linux a partir do fonte (método fácil)

Kommander & KDialog

Como instalar o compilador Free Pascal

Aplicativos Linux para o dia-a-dia

  
Comentários
[1] Comentário enviado por mbsalgueiro em 03/01/2007 - 09:56h

Muito interesante esse programa Pebrot!!!
nunca tinha ouvido falar!! gostei do artigo esta de parabens!!!!!
e viva o linux!

[2] Comentário enviado por removido em 03/01/2007 - 10:00h

recomendo que deem uma olhada no msnp http://msnp.sourceforge.net/ ele é escrito em python e usa curses, é muito bonito e bem feito, levicimo e um forte concorrente.

[3] Comentário enviado por flipe em 03/01/2007 - 11:11h

o gaim também liberou uma versão para modo texto.

[4] Comentário enviado por fsamoreira em 03/01/2007 - 12:02h

o problema que eu encontrei no msnp é principalmente o fato de que a última atualização dele é de janeiro de 2004. ou seja, a 3 anos que não mechem nele

[5] Comentário enviado por tenchi em 03/01/2007 - 17:59h

Insdispensável: Screen.
Cliente msn tem o tmsnc.
Excelente artigo.

[6] Comentário enviado por fsamoreira em 03/01/2007 - 18:13h

do screen eu pretendo falar depois, estou estudando algumas opções avançadas dele

[7] Comentário enviado por birilo em 03/01/2007 - 21:40h

Legal a intenção do artigo, mas muito enrrolado e repetitivo..
recomendo ser mais objetivo nos próximos...

Agora... configuração perfeita não pode faltar o screen... =)

[]'s

Danilo

[8] Comentário enviado por aniltonf em 04/01/2007 - 08:28h

Olá blehhh, fixe o seu artigo, e eu que gosto do preto e branco, aliás, base do linux, e que tenho sempre muitos problemas com o MSN, gostava muito de utilizar este PEBROT, mas;
Não consigo sequer instalar o software. Atenção para o erro.
____________________________________________________
escjpc:/home/afernandes/Desktop/pebrot-0.8.8 # python setup.py install
Traceback (most recent call last):
File "setup.py", line 8, in ?
from distutils.core import setup
ImportError: No module named distutils.core
escjpc:/home/afernandes/Desktop/pebrot-0.8.8 # ll
total 80
-rwxr-xr-x 1 1002 users 327 2005-08-15 18:29 AUTHORS
-rwxr-xr-x 1 1002 users 12836 2006-04-28 23:28 ChangeLog
-rw-r--r-- 1 1002 users 18003 2005-08-15 18:29 COPYING
drwxr-xr-x 5 1002 users 176 2006-04-28 23:42 i18n
-rwxr-xr-x 1 1002 users 779 2005-08-15 18:29 INSTALL
drwxr-xr-x 2 1002 users 128 2006-04-28 23:42 logos
-rwxr-xr-x 1 1002 users 300 2005-08-15 18:29 pebrot
-rwxr-xr-x 1 1002 users 10214 2005-08-15 18:29 pebrotrc
-rw-r--r-- 1 1002 users 256 2006-04-28 23:42 PKG-INFO
drwxr-xr-x 2 1002 users 160 2006-04-28 23:42 pypebrot
-rwxr-xr-x 1 1002 users 8402 2005-08-15 18:29 README
-rwxr-xr-x 1 1002 users 1466 2005-08-15 18:29 setup.py
drwxr-xr-x 3 1002 users 200 2006-04-28 23:42 utils
escjpc:/home/afernandes/Desktop/pebrot-0.8.8 # ____________________________________________________

Tirei este trecho da consola.

Conseguia ajudar-me, a resolver o problema,
posso desabilitar a parte que pede o "distutils.core", mas acho que o soft não funcionava.

[9] Comentário enviado por fsamoreira em 04/01/2007 - 11:14h

não tenho certeza, mas creio que o problema é a versão do python que está usando está desatualizada. use o comando $ python -V para conferir a versão.

procure instalar também um pacote chamado python-setuptools

[10] Comentário enviado por aniltonf em 04/01/2007 - 19:38h

Tenho a certeza que não é isso, o meu python veio com o suse 10.1, e tem versão 2.4...

Acho que o ficheiro "distutils.core" está em falta. Não existe esse ficheiro no pacote do pebrot?

[11] Comentário enviado por EdDeAlmeida em 04/01/2007 - 20:21h

Muito bom o pebrot! Gosto de programar no console, mas como tenho de dar assistência a alguns clientes via MSN, acabava ficando preso ao X. Agora posso preogramar em paz, com o pebrot noutro terminal. Vou hackear o código para ver se implemento algumas coisas, como avisos quando chegam mensagens e coisas assim.
Obrigado.

[12] Comentário enviado por tenchi em 07/01/2007 - 18:36h

Ah, você disse que vai escrever sobre o screen. Não sei se você já viu, mas no site do Aurélio tem bastande coisa sobre este programa. Na verdade foi lá que eu aprendi sobre o screen.

Link: http://aurelio.net/doc/coluna/

Falows...,

Ah, e eu "disconcordo" inteiramente do título deste artigo. Quem disse que um terminal precisa ser necessáriamente preto-e-branco?? ;)

Eh zoeira...

[13] Comentário enviado por GilsonDeElt em 14/01/2007 - 01:44h

Muito bom!
Valeu!

[14] Comentário enviado por botinha em 15/01/2007 - 20:24h

Amigo muito bom o artigo, acho que você deveria se puder encrementar o artigo, como associar sons e beeps.


Muito bom.......

[15] Comentário enviado por rafa-ctba em 03/06/2007 - 23:33h

Estou com o seguinte problema ao tentar entrar pelo pebrot:

Traceback (most recent call last):
File "/home/daniel/.pebrot/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1886, in main
curses.wrapper( gogogo )
File "curses/wrapper.py", line 44, in wrapper
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1848, in gogogo
con.loopInput()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1524, in loopInput
self.oneStep()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/pebrot.py", line 1454, in oneStep
st= self.Text.getLine( self.handleInput, self.step )
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/ui.py", line 250, in getLine
idleFunc()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/MSN.py", line 920, in step
self.processMsgs()
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/MSN.py", line 1004, in processMsgs
msg= Msg( res[1] )
File "/home/daniel/Desktop/pebrot-0.8.7/pypebrot/MSN.py", line 512, in __init__
expLen= len( MSGS[self.type] )+1
KeyError: 'NOT'

Desde ja agradeço!

[16] Comentário enviado por oliviofarias em 23/11/2008 - 15:16h

Me diga uma cosia, como coloco um desenho novo naquela abertura?

[17] Comentário enviado por lucaspolo em 21/12/2008 - 21:53h

Realmente é muito interessante esse Pebrot!
Eu ainda li um outro artigo seu sobre páginas antigas e vi sobre máquinas antigas e dicas de como monta-las, dai comecei a juntar as idéias do tico e do teco e agora to pensando em montar uma máquininha só por brincadeira...

Parabéns pelo artigo.

[18] Comentário enviado por david fonseca em 13/08/2009 - 22:34h

Amigos aki ta assim quando eu chamo o $ pebrot

david@david-ubuntu:~$ pebrot
/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py:7: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5

Traceback (most recent call last):
File "/usr/local/bin/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1980, in main
os.mkdir( MAIN_LOG_DIR )
OSError: [Errno 13] Permission denied: '/home/david/.pebrot/logs/'


alguem pode mim ajudar???

[19] Comentário enviado por El Camaleon em 08/04/2011 - 00:29h


Sem querer reviver esse tópico .. mas eu queria uma solução para o problema acima afinal ele esta sendo o meu nos dias de hoje. Após seguir todos os passos listados acima sobre instalação depois ter ir e colocar o arquivo pebrotrc na pasta ./pebrot e enfim perceber que o pebrot vai funcionar e ficar a um passo de usá-lo acontece esse erro que o David citou.
Eu consigo entrar com meu usuário ele chega a pedir senha e entra na tela e começa a carregar quando ele esta carregando a tela simplesmente fecha e o que resta é a mensagem:

/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py:7: DeprecationWarning: the md5 module is deprecated; use hashlib instead
import md5

Traceback (most recent call last):
File "/usr/local/bin/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1886, in main
curses.wrapper( gogogo )
File "/usr/lib/python2.6/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1848, in gogogo
con.loopInput()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1524, in loopInput
self.oneStep()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1454, in oneStep
st= self.Text.getLine( self.handleInput, self.step )
File "/usr/local/lib/python2.6/dist-packages/pypebrot/ui.py", line 250, in getLine
idleFunc()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py", line 920, in step
self.processMsgs()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py", line 1004, in processMsgs
msg= Msg( res[1] )
File "/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py", line 512, in __init__
expLen= len( MSGS[self.type] )+1
KeyError: 'NOT'

Agradeço a ajuda de todos, peço desculpas por estar revivendo esse tópico mas gostaria de ajuda. Mais uma vez obrigado.

[20] Comentário enviado por mactoia em 18/05/2011 - 10:19h

instalei o pebrot mas ele não esta criando o arquivo pebrotrc na pasta ~/.pebrot. ele sempre diz q vai criar mas termina não criando.

[21] Comentário enviado por khyron em 11/05/2012 - 11:37h

bom dia!...

tb estou com esse problema...alguem poderia ajudar ???


$pebrot
/usr/local/lib/python2.6/dist-packages/pypebrot/MSN.py:7: DeprecationWarning: the md5 module is deprecated; use hashlib instead

Traceback (most recent call last):
File "/usr/local/bin/pebrot", line 16, in <module>
pypebrot.pebrot.main()
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1886, in main
File "/usr/lib/python2.6/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 1822, in gogogo
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 756, in getPassword
File "/usr/local/lib/python2.6/dist-packages/pypebrot/pebrot.py", line 483, in fatalError


Contribuir com comentário