Usando o Yowsup para enviar comandos ao Shell

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

[ Hits: 13.815 ]

 


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

[RESOLVIDO] Slackware 13.1.x sob CentOS/KVM não reconhece interface de rede

Alterando o editor do crontab

CentOS 6.5 (com Intel i915) - Erro após upgrade: "server terminated with error (2); no screens found" [Resolvido]

Tor e netcat-openbsd em automação

Astralinux: Imagem Docker oficial

Leitura recomendada

Python 3.0: Gravando dicionários em arquivos

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

Python: Descompilando bytecode

Remover diretórios recursivamente em Python

Tomcat x Oracle10g

  

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