Muitas vezes, existem situações em que o acesso ao servidor é necessário aqui e agora. No entanto, a conexão SSH nem sempre é a maneira mais conveniente, pois o cliente SSH, o endereço do servidor ou o link do usuário / senha pode não estar disponível. Obviamente, existe o
Webmin , que simplifica a administração, mas também não fornece acesso instantâneo.
Então, decidi implementar uma solução simples, mas interessante. Ou seja, escrever um bot de Telegram, que, começando no próprio servidor, executará os comandos enviados a ele e retornará o resultado. Depois de estudar
vários artigos sobre esse tópico, percebi que ninguém havia descrito essas implementações ainda.
Eu implementei este projeto no Ubuntu 16.04, mas, para um lançamento sem problemas em outras distribuições, tentei fazer tudo de uma maneira geral.
Bot Registration
Registre um novo bot no @BotFather. Nós enviamos a ele
/newbot
e mais adiante no texto. Vamos precisar do token do novo bot e do seu ID (você pode obtê-lo, por exemplo, em
@userinfobot ).
Preparação Python
Para iniciar o bot, usaremos a biblioteca
telebot
(
pip install pytelegrambotapi
). Usando a biblioteca de
subprocess
, executaremos comandos no servidor.
Lançamento do bot
No servidor, crie o arquivo bot.py:
nano bot.py
E cole o código nele:
from subprocess import check_output import telebot import time bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
Substituímos o token de bot nele pelo que o @BotFather emitiu e user_id pelo valor do ID da sua conta. A verificação da identificação do usuário é necessária para que o bot forneça acesso ao seu servidor apenas para você. A função
check_output()
executa o comando passado e retorna o resultado.
Resta apenas o lançamento do bot. Para iniciar processos no servidor, prefiro usar a
screen
(
screen
sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(onde "ServerBot" é o identificador do processo)
O processo será iniciado automaticamente em segundo plano. Vamos entrar em diálogo com o bot e verificar se tudo funciona como deveria:

Parabéns! O bot executa os comandos enviados a ele. Agora, para obter acesso ao servidor, basta abrir uma caixa de diálogo com o bot.
Repetição de comandos
Freqüentemente, para monitorar o status do servidor, você deve executar os mesmos comandos. Portanto, a implementação da repetição de comandos sem enviá-los novamente ficará muito fora de lugar.
Vamos implementar usando os botões embutidos sob as mensagens:
from subprocess import check_output import telebot from telebot import types
Reinicie o bot:
killall python3 screen -dmS ServerBot python3 bot.py
Verifique novamente se tudo funciona corretamente:

Pressionando o botão abaixo da mensagem, o bot deve repetir o comando a partir do qual a mensagem foi enviada.
Em vez de uma conclusão
Obviamente, esse método não pretende substituir os métodos clássicos de conexão, no entanto, permite que você descubra rapidamente o status do servidor e envie comandos a ele que não exigem saída complexa.