TEXTO INCOMPLETO: Rodando bots a partir de um celular Android

(Texto incompleto de 29 de agosto de 2018. Publicando porque pelo menos é parcialmente útil)


Recentemente, eu tive a ideia de rodar um bot RSS no meu celular antigo, já que esse tipo de bot é bastante leve e seria muito exagero deixar meu PC de mesa ligado o tempo inteiro por causa de um bot que checa um feed RSS uma vez por hora.

Depois de brigar um bocado, procurando soluções pra cima e pra baixo, achei uma solução simples e que roda em qualquer celular Android—-sem root nem nada.

Segue um guia rápido de como fazer o mesmo no seu celular.

O que você precisa saber

Você não precisa saber programar pra conseguir fazer o que eu descrevo aqui, mas saber pelo menos o básico de como usar a linha de comando do Linux é muito importante. Quase tudo sera feito na linha de comando.

Obviamente, conhecimentos em administrar sistemas Linux vai ajudar bastante, também.

Qual é a ideia

A ideia é, usando um programa chamado feed2toot, checar periodicamente por atualizações em um feed RSS. Vamos configurar o sistema pra executar essa checagem periodicamente no celular.

O que instalar no Android

Vejamos o que temos que instalar para conseguir fazer o bot funcionar.

Termux

O Termux é um ambiente Linux para Android que não requer root e te permite instalar programas Linux usando o terminal. Você pode instalar Git, Python, Ruby, etc., e usar como se estivesse num PC normal. É ele que vai nos permitir usar as ferramentas necessárias para se rodar um bot, então ele é absolutamente necessário.

Ele está disponível na Google Play e no F-Droid.

Hacker's Keyboard

O teclado padrão do Android não tem várias teclas que são úteis pra se usar um terminal (Ctrl, Alt, Tab, Esc, etc.), então eu recomendo que você use um teclado que tenha essas teclas para a experiência de usar o terminal no celular não fique ainda mais dolorosa. Minha recomendação é o Hacker's Keyboard que tá tanto na Google Play quanto no F-Droid.

Obviamente não é obrigatório (ainda é possível usar o terminal com o teclado normal do Android), mas é altamente recomendável.

Acessando o celular por SSH

O Secure Shell ou SSH é um protocolo de comunicação seguro que permite que você use um computador remotamente. No caso, o computador a ser usado é o celular. Eu recomendo muito configurar o SSH antes de tudo porque configurar o bot apenas usando a telinha e o teclado do celular, apesar de ser possível, vai ser muito incômodo. É mais fácil conectar por SSH e usar o celular a partir do computador.

No Linux, a maioria das distribuições já vem com o comando ssh instalado e é isso que vamos usar. No Windows, será necessário instalar um cliente SSH. Pode ser qualquer um, mas o mais comum a ser usado é o PuTTY. Eu pessoalmente nunca usei SSH no Windows, então vou passar as instruções de configuração apenas para Linux — o que não tem muito problema, porque as instruções devem ser similares no PuTTY.

Ativando o servidor SSH no celular

Para acessar o celular, você primeiro precisa ativar o servidor ssh nele. Pra isso, abra o Termux e execute o seguinte comando:

sshd

Pronto! O servidor SSH já está configurado. Importante frizar que o Termux deve continuar executando para que o servidor SSH se mantenha vivo. Caso você encerre a sessão, o servidor morre e você não vai mais conseguir acessar o celular.

Descobrindo o endereço IP do celular em sua rede

O próximo passo é descobrir qual é o endereço IP do celular em sua rede local. Existem algumas maneiras de fazer isso no Android, mas a maneira mais fácil de fazer isso a partir do terminal é usando ifconfig ou ip a. A vantagem é que basta literalmente digitar um desses comandos no Termux pra ele te dar todas as informações de rede que você precisa:

ifconfig

A desvantagem é que pode não ser tão fácil de decifrar a saída desse comando:

`dummy0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING NOARP MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:3 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:210 (210.0 B)

lo Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:964 errors:0 dropped:0 overruns:0 frame:0 TX packets:964 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:73584 (71.8 KiB) TX bytes:73584 (71.8 KiB)

p2p0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wlan0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.15.3 Bcast:192.168.15.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:313365 errors:0 dropped:1 overruns:0 frame:0 TX packets:154157 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:278545208 (265.6 MiB) TX bytes:16271517 (15.5 MiB)`

Geralmente, tem algumas maneiras de descobrir qual dessas é a sua conexão:

No nosso caso, o nome da interface de rede é wlan0 e o endereço IP é 192.168.15.3.

Copiando sua chave pública para o celular

O terminal do Termux não precisa de usuário e senha, então não dá pra você logar por SSH usando sua senha de usuário. Para acessar o seu celular seguramente, você tem que fazer uma autenticação por chave pública.

Autenticação por chave pública

(Se você já sabe o que uma chave SSH e já tem sua chave pública, pode pular essa parte)

Não vou entrar nos detalhes de como funciona esse tipo de autenticação, mas, basicamente, você tem que criar um par de chaves SSH, sendo uma dessas chaves pública e outra, privada. A chave pública pode (e deve) ser compartilhada publicamente enquanto que a chave privada deve permanecer secreta em seu computador. Dessa maneira, a grosso modo, o servidor usa sua chave pública para perguntar se você é você e você usa sua chave privada pra responder que sim. Como só você tem a chave privada, é garantido que só você pode responder.

Enfim, para gerar um par de chaves SSH no seu computador, abra um terminal e rode o seguinte comando:

ssh-keygen -t rsa -b 4096 -C

Conectando ao celular

Finalmente, no seu PC, abra um terminal e digite o seguinte comando:

ssh -p 3022

No meu caso, como meu IP é 192.168.15.3, eu rodaria:

ssh -p 3022 192.168.15.3

E pronto! A partir desse momento