Muy a menudo hay situaciones en las que se necesita acceso al servidor aquí y ahora. Sin embargo, la conexión SSH no siempre es la forma más conveniente, porque el cliente SSH, la dirección del servidor o el enlace de usuario / contraseña pueden no estar disponibles. Por supuesto, existe
Webmin , que simplifica la administración, pero tampoco brinda acceso instantáneo.
Entonces decidí implementar una solución simple pero interesante. Es decir, escribir un bot de Telegram, que, comenzando en el servidor mismo, ejecutará los comandos que se le envíen y devolverá el resultado. Después de estudiar
varios artículos sobre este tema, me di cuenta de que nadie ha descrito tales implementaciones todavía.
Implementé este proyecto en Ubuntu 16.04, pero para un lanzamiento sin problemas en otras distribuciones, intenté hacer todo de manera general.
Registro de bot
Registre un nuevo bot con @BotFather. Le enviamos
/newbot
y más adelante en el texto. Necesitaremos el token del nuevo bot y su identificación (puede obtenerlo, por ejemplo, de
@userinfobot ).
Preparación de pitón
Para iniciar el bot, utilizaremos la biblioteca
telebot
(
pip install pytelegrambotapi
). Usando la biblioteca de
subprocess
, ejecutaremos comandos en el servidor.
Lanzamiento de bot
En el servidor, cree el archivo bot.py:
nano bot.py
Y pegue el código en él:
from subprocess import check_output import telebot import time bot = telebot.TeleBot("XXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
Reemplazamos el token bot con el que emitió @BotFather y user_id con el valor de identificación de su cuenta. Es necesario verificar la identificación del usuario para que el bot le proporcione acceso a su servidor solo a usted. La función
check_output()
ejecuta el comando pasado y devuelve el resultado.
Solo queda lanzar el bot. Para iniciar procesos en el servidor, prefiero usar la
screen
(
sudo apt-get install screen
):
screen -dmS ServerBot python3 bot.py
(donde "ServerBot" es el identificador de proceso)
El proceso comenzará automáticamente en segundo plano. Vamos al diálogo con el bot y verifiquemos que todo funcione como debería:

Felicidades El bot ejecuta los comandos que se le envían. Ahora, para obtener acceso al servidor, solo necesita abrir un diálogo con el bot.
Repetición de comandos
A menudo, para monitorear el estado del servidor, debe ejecutar los mismos comandos. Por lo tanto, la implementación de la repetición de comandos sin enviarlos nuevamente estará muy fuera de lugar.
Implementaremos usando los botones en línea debajo de los mensajes:
from subprocess import check_output import telebot from telebot import types
Reinicia el bot:
killall python3 screen -dmS ServerBot python3 bot.py
Verifique nuevamente que todo funcione correctamente:

Al presionar el botón debajo del mensaje, el bot debe repetir el comando desde el cual se envió el mensaje.
En lugar de una conclusión
Por supuesto, este método no pretende ser un reemplazo de los métodos de conexión clásicos, sin embargo, le permite conocer rápidamente el estado del servidor y enviarle comandos que no requieren una salida compleja.