1 maio

Desligando seu computador remotamente via Twitter.

Mas hein ?

Depois do desenvolvimento do @NerdFollow, fiquei imaginando milhares de utilidades que eu poderia criar para o twitter utilizando sua API via Python. Me remeteu a imaginação certa vez que, se eu tenho ferramentas para utilizar o twitter de onde eu estiver a minha disposição, eu posso também linkar o meu computador a isso, dessa forma posso enviar comandos ao meu computador pessoal, via twitter. Após alguns minutos vencendo a preguiça, e algumas horas de programação, fiz um script bem simples em Python que interage diretamente com o twitter, e interpreta “Palavras Chaves” que eu tenha enviado para determinada conta diretamente na máquina que estiver rodando o script. Isso me possibilita lidar com minha máquina de maneira que eu tenha escolhido, com as limitações que eu tenha escolhido, de onde eu estiver e utilizando o twitter como intermediário. O script está em sua forma mais crua e simples, muitas sugestões foram dadas, muitas ideias, porém devido a simplicidade, deixo por conta do usuário adequar as suas vontades, ideias ou necessidades, apresentarei apenas o conceito básico da ideia, sem adentrar muito a questões de implementação ou funcionalidades. O comando a ser interpretado pelo script ao encontrar a nossa “Palavra Chave” no twitter será um simples e útil “shutdown now -h”, claro que vc também pode implementar muitas outras palavras chaves com respostas e comandos diferentes, funcionalidades diferentes. Como eu disse, as melhorias e adequações ficam por conta do usuário. Irei apresentar o script linha a linha e comentando cada parte, no fim do post há um link para o download do .py completo via 4shared. Para que rode corretamente, vc necessitara de uma conta registrada como Desktop App em https://dev.twitter.com/ para que possa fazer o login via OAuth, e também do módulo Python-Twitter para Python que pode ser encontrado em: http://code.google.com/p/python-twitter/.

A Lógica

A lógica é bem simples, teremos uma conta no twitter o qual será manipulada por nosso script, a segurança dessa conta pode ser diversa, podemos limita-la a apenas nosso serviço e não seguir nem ser seguido por ninguém, bloquear usuários, os detalhes de uso ficam a gosto. Como usaremos apenas as “Direct Messages” em nossa aplicação, a conta não é te todo “inútil”. Basicamente, o nosso pequeno cliente irá monitorar as “Direct Messages” da conta de um em um minuto, e verificar se determinada “Palavra Chave” se encontra no texto da DM, caso se encontre, o script irá executar o comando atribuído a “Palavra Chave” no nosso source diretamente na máquina que o estiver executando. A partir desse ponto as possibilidades são inúmeras.

TweetDown

A app é Open Source, está bem simples e pequena:

# coding: utf-8

import twitter # http://code.google.com/p/python-twitter/
import time
import os

Aqui importamos os módulos necessários para a execução.


api = twitter.Api(consumer_key='',
consumer_secret='',
access_token_key='',
access_token_secret='')

Logo após, logamos no twitter com nossas credenciais.


def DeleteMessages():
M = api.GetDirectMessages()
for MiD in M:
api.DestroyDirectMessage(MiD.id)

A função acima é responsável por deletar todas as “Direct Messages” da conta, ela é utilizada sempre que enviamos um comando para a conta em questão, assim evitamos que o mesmo comando seja interpretado mais de uma vez.


def GetMessage():
M = api.GetDirectMessages()
for text in M:
T = str(text) #Transforma a DM em string
if T.find('ShutdownHePlease'):
print 'O sistema será desligado devido a solicitação "ShutdownHePlease"
DeleteMessages()
os.system("shutdown now -h")
exit

E finalmente a função que faz a mágica acontecer. Após verificar todas as DMs, a linha “if T.find(‘ShutdownHePlease’):” verifica se em alguma DM está presente a frase “ShutdownHePlease”, logo, essa será nossa palavra chave em questão, vc pode colocar a palavra chave que lhe agradar, ou que lhe fizer mais sentido. Caso alguma DM contenha a “Palavra Chave”, o sistema irá printar (exibir) uma mensagem, e então chamará a função “DeleteMessages()” pelo mesmo motivo citado na explicação da mesma. Agora que já identificamos a “Palavra Chave” em meio as nossas DMs e limpamos as mesmas, vamos executar o comando atribuído a “Palavra Chave”. Em nosso caso, foi o comando “os.system(“shutdown now -h”)” que é responsável por desligar a máquina. Resumindo, toda vez que a conta utilizada pelo script receber uma DM contendo “ShutdownHePlease”, o computador que estiver executando o script será desligado, devido a versatilidade de uso do twitter, logo vc pode desligar sua máquina de onde estiver. Como também já dito, as possibilidades são inúmeras, vc pode substituir o “shutdown” por qualquer outro comando, ou até mesmo função de seu gosto, pode inclusive setar várias “Palavras Chave” com funcionalidades diferentes. Agora cabe ao usuário adequar a sua maneira. Para aumentar a confiabilidade, vc também pode filtrar as “Palavras Chave” pelo username de quem as enviou, fazendo o script interpretar apenas palavras chaves de determinado user no twitter, assim evitará que qualquer um desligue, ou sabe-se lá mais o que podem fazer com sua máquina via twitter, caso tenham conhecimento para. O script deve ser executado via root para que funcione corretamente.

while True:
GetMessage()
time.sleep(60)

Para finalizar, esse é o loop que executa e mantem o .py monitorando as DMs em busca de alguma palavra chave de um em um minuto, esse delay pode ser modificado no parâmetro da função “time.sleep()”.

Download

O Download do script completo e comentado em .py pode ser feito através do link: http://www.4shared.com/file/GO7KihRP/TweetDown.html

O perigo desse script está na possibilidade de o rodarmos em uma máquina alheia por exemplo. Adicionando funções além do “shutdown”, poderíamos ganhar controle remoto de uma máquina via celular por exemplo, apenas enviando parâmetros via Twitter, por isso, muito cuidado. É interessante também a possibilidade do uso desse script para rodar comandos em massa, vc pode rodar o script em 100 maq. por exemplo, e toda vez que vc enviar a DM que vc tenha setado, as 100 interpretarão, seja um simples “shutdown” em massa até perigosos “rm’s”. Espero que tenham gostado, qualquer dúvida, crítica ou sugestão pode ser deixada nos comentários, ou então envia diretamente a mim no twitter @withcaffeine. Espero que tenham curtido, até a próxima tuxers.

Felippe Regazio

Humano nas horas vagas.