Usando o Yowsup para enviar comandos ao Shell

Publicado por Carlos Affonso Henriques. em 01/12/2014

[ Hits: 12.981 ]

 


Usando o Yowsup para enviar comandos ao Shell



Agora aprendendo Python, estou que nem criança no dia 25 de dezembro!

Estou fazendo ensaios para modificar alguns sistemas automatizados, tanto industrial quanto residencial. Estamos testando uma solução empregando o WhatsApp, onde o cliente recebe alertas em seu smartphone e através do próprio instant messenger, envia comandos a um sistema implementado com Raspberry Pi, para obter status de diversos dispositivos e comandá-los.

No caso específico, são bombas d'água de um sistema de drenagem.

Entendam que isso é só um teste e ainda não decidi se essa solução será posta em produção, sua finalidade é apenas didática.

Para quem não conhece o Yowsup, é um cliente WhatsApp para Shell escrito em Python. O objetivo não é fazer um tutorial dele, que pode ser encontrado facilmente.

Segue uns dois, para o leitor "sair do chão":
Depois dele devidamente configurado, vamos fazer uma pequena modificação no código do programa para que ele possa interagir com o Shell do Linux. No arquivo foo/yousup/yowsup-master/src/Examples/ListenerClient.py, busque a seguinte linha:

print("%s [%s]:%s"%(jid, formattedDate, messageContent))

Transforme o comando em uma variável e comente esta linha, ela será chamada pela variável que criaremos:

variavel=("%s [%s]:%s"%(jid, formattedDate, messageContent))
print variavel

Imediatamente abaixo, vamos fazer uma operação de abertura, escrita e fechamento de um arquivo, este sim é de onde extrairemos o comando do Shell. Claro que isso pode ser feito de outras formas, como por exemplo, com a dica que postei a alguns dias aqui no VOL, mas gostaria de dar ênfase à abertura e escrita de arquivos no Python.

#Notem o parâmetro "w"... se quiserem aditar o arquivo usem o parâmetro "a"
arquivo=open("testecmdshell.txt", "w")

#Nesta linha o Python irá escrever no arquivo a saída do comando print("%s [%s]:%s"%(jid, formattedDate, messageContent)) que foi anteriormente declarado na variável "variavel"
arquivo.write(variavel)

#E finalmente... Fechamos o arquivo.
arquivo.close()

Pronto! Agora vamos colocar o programa yousup-cli em modo listen para receber mensagens:

foo/yowsup/yowsup-master/src/yowsup-cli -l -w -c config.5521987654321

Agora, tudo é muito simples. É só Shell.

Exemplo:

while true; do $(cat <(cut -f 3 -d":" foo/yowsup/yowsup-master/src/testecmd.txt; cat /dev/null > /root/yowsup/yowsup-master/src/testecmd.txt)); done

Envie o comando ifconfig pelo cliente WhatsApp do seu telefone e veja o resultado!

É claro que essa gambiarra não faz parte de nada, é apenas um "Protoboard" para mostrar que o limite do software livre é a criatividade de desenvolvedor.


Bom trabalho a todos!

Outras dicas deste autor

Comando seq com saída em hexadecimal

SSH contornando o firewall com o Tor

Editando arquivos e usando variáveis no sed

Anaconda died after receiving signal 9 [Resolvido]

Alterando o editor do crontab

Leitura recomendada

Python 3.0: Gravando dicionários em arquivos

Python - UnicodeDecodeError: 'utf-8' codec can't decode byte [Resolvido]

Python: Descompilando bytecode

Personalizar mensagem de erro no Squid

Temas de login GDM e MDM HTML5 no Linux Mint 16

  

Comentários
[1] Comentário enviado por tenorio336 em 02/01/2015 - 00:42h

Muito bom Carlos, testado, estou aqui pensando em algumas aplicações embarcadas!!!

Caso alguém tenha algum problema com o yowsup com a autenticação no server do whatsapp, segue uma ajudinha...faz se necessária esta alteração por conta da atualização dos tokens do whatsapp...

https://github.com/tgalal/yowsup/commit/e223da38b12a2818198c3105af3273588f551bde

Abraços!

[2] Comentário enviado por capitainkurn em 05/01/2015 - 10:32h

Boa, que bom que gostou! Acho que a dica seria mais visível se eu escolhesse outro título Rsssss, ao invés de "Usando o Yowsup para enviar comandos ao Shell" "Usando o WhatsApp para enviar comandos ao Shell".

[3] Comentário enviado por fabiobp2000 em 15/03/2015 - 15:59h


Como mandar a mensagem para um grupo do whatsapp?

[4] Comentário enviado por capitainkurn em 18/03/2015 - 15:28h


[3] Comentário enviado por fabiobp2000 em 15/03/2015 - 15:59h


Como mandar a mensagem para um grupo do whatsapp?


SInceramente não sei, ainda não precisei dessa funcionalidade e não explorei o alicativo a fundo, mas não vejo por não poderia ser feito.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts