Usando o Yowsup para enviar comandos ao Shell
Dica publicada em Python / Manipulação de Arquivos
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:
Transforme o comando em uma variável e comente esta linha, ela será chamada pela variável que criaremos:
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.
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!
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":
- hacktracking: # yowsup-cli: Send Whatsapp messages from command-line
- Yowsup – WhatsApp em terminal Linux |
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
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()
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!
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!