Cómo administrar un servidor usando Telegram, si, leiste bien, Telegram.

En este artículo, te voy a mostrar cómo configurar un Bot, para que puedas administrar un servidor a través de la aplicación de mensajería.

Hace unas semanas me pregunté, de qué otras maneras puedo acceder a un servidor para administrarlo y comencé a repasar, ideas locas, una de ellas es mandarle comandos a través de Telegram y quedó.

Este fin de semana, me puse a buscar y a probar y me tope con este GIT, alguien tuvo la misma idea y lo hice muy pero muy fácil.

botgram/shell-bot
:robot: Telegram bot that executes commands and sends the live output - botgram/shell-bot

Lo primero que debemos hacer es crear un Bot en Telegram. Hablé sobre eso en este artículo:

Cómo enviar alertas de Zabbix a Telegram
Zabbix es muy flexible y hace unos días que lo integre para que nos caigan lasalertas en un grupo de Telegram, para que todo el equipo pueda saber qué estápasando, no solo el que está de guardia. Hace mes y medio que estoy trabajando dentro de una empresa que da servicios ala telco más grande de…

Una vez creado el bot. Vamos a instalar NPM en el servidor que queremos administrar:

sudo apt install npm

Y luego, vamos a clonar el repositorio con:

git clone https://github.com/botgram/shell-bot.git && cd shell-bot

Ejecutamos:

npm install

Esperamos a que se descarguen las dependencias e iniciamos el Shell Bot:

node server

La primera vez que lo arranquemos nos va a preguntar dos cosas. Una de ellas es que peguemos la Api Key de nuestro bot de Telegram y lo otro, nos va a pedir que le enviemos un mensaje a nuestro bot para configurar el hecho de que seamos los únicos que podamos ejecutar comandos.

Luego, arrancamos el bot tipeando en telegram:

/start

Para probar que funcione, podemos ejecutar un comando básico de Linux para ver que nos devuelve. En este caso, nos devolverá el listado del contenido en "/home/<tusuario>"

/run ls

En mi caso, lo use para ejecutar un "docker ps" y salió así:

¿Cómo lo ves? ¿le ves alguna utilidad? ¿Lo usarías?