No creo que haga falta remarcar la importancia que tienen las aplicaciones de mensajería en nuestro día a día ni lo popular que se está volviendo Telegram.

¿Qué tal si enredamos un poco con una de las funciones mas chulas que nos ofrece? Los Bots.

Los bots son aplicaciones de terceros que se ejecutan dentro de Telegram, los usuarios pueden interactuar por comandos o peticiones y se controlan a través de su API usando HTTPS.

Las posibilidades son infinitas, y eso es un poco impreciso, así que precisemos. Como muestra vamos a crear un bot y un par de scripts para que nos avise:

  • Si se reinicia el servidor.
  • Cuando se realice una actualización desatendida de paquetes.

Pero empecemos por el principio,

Creando el Bot

Tan simple como hablar a BotFather (el bot creador de bots, botception?) enviando el comando /newbot. Esto iniciará una cadena de preguntas por parte BotFather para configurarlo.

Nos preguntará el nombre del bot (por ejemplo, Palabra de Root), su nombre de usuario (ej, “PalaBraDeRootBot”) y a continuación nos dará un token de acceso al API, guarda ese dato a buen recaudo porque lo vamos a necesitar ya mismo.

Otro dato que necesitamos es el ID de nuestra cuenta en Telegram, lo puedes conseguir enviando /start a otro bot, Userinfobot.

Creando los scripts

Aviso cuando se reinicie el servidor

Que se vaya la luz (y vuelva!), picos de tensión, fallo en un servicio, sobrecalentamiento… Hay muchas razones por las que un servidor puede sufrir un reinicio no programado. Hagamos que nuestro bot nos avise cada vez que haya un reinicio.

Primero el script, muy simple:

nano ~/mis_scripts/reboot2bot.sh
#!/bin/sh
TOKEN="TU-TOKEN-AQUI"
ID="TU-ID-AQUI"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
HOST_NAME="$(uname -n)"

MSG="El server [$HOST_NAME] acaba de reiniciarse. Espero que haya sido a propósito!"

curl -s -X POST $URL -d chat_id=$ID -d text="$MSG"
chmod +x ~/mis_scripts/reboot2bot.sh

Ya podemos probarlo, si lo lanzamos ~/mis_scripts/reboot2bot.sh, deberíamos recibir la notificación en nuestra cuenta de Telegram.

Aviso de actualizaciones automáticas

Lo he visto demasiadas veces.

Hackencio™ tiene un nuevo proyecto ultra-super-chachi para su raspberry → Hackencio configura todo lo configurable, codifica todo lo codificable → Hackencio disfruta, maravillado de su creación → Hackencio deja pasar los meses y piensa ¿Si esto funciona, pa qué tocarlo?

Repetid conmigo, siempre hay que mantener al día nuestro software. Como mínimo se deberían realizar todas las actualizaciones de seguridad.

Lo ideal es hacer este proceso manual y periódico, hay varios problemas bastante serios si seguimos el camino de las actualizaciones automáticas pero, puestos a elegir entre automatizar y no actualizar en absoluto, está claro lo que es mejor. ¿No?

Pues vamos al lío.

nano ~/mis_scripts/update2bot.sh
#!/bin/sh

TOKEN="TU-TOKEN-AQUI"
ID="TU-ID-AQUI"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"

HOST_NAME="$(uname -n)"
UPDATE="$(apt-get update)"
UPGRADE="$(apt-get upgrade -y)"

MSG="[$HOST_NAME] Daily Update Notification %0A$UPGRADE"

curl -s -X POST $URL -d chat_id=$ID -d text="$MSG"
chmod +x ~/mis_scripts/update2bot.sh

También podemos probar este script, solo hay que tener en cuenta que para ejecutar las actualizaciones de sistema hacen falta privilegios así que hará falta usar sudo sudo ~/mis_scripts/reboot2bot.sh.

Programando los scripts

Crontab

En pocas palabras Crontab es un fichero de texto donde se indican comandos o scripts y cuándo deben ser ejecutados. Cada usuario tiene su propio fichero.

Para el script de aviso de reinicio

Editaremos el archivo crontab del usuario con el siguiente comando

crontab -e

Y añadiremos al archivo

@reboot sleep 30 && /home/usaurio/mis_scripts/reboot2bot.sh

En esa línea le estamos indicando que tras el reinicio y pasados 30 segundos ejecute el script reboot2bot.sh

Para el script de las actualizaciones automáticas

Modificaremos el archivo crontab del usuario root

sudo crontab -e

Y añadiremos al archivo

0 2 * * * /home/usaurio/mis_scripts/update2bot.sh

Listo, ahora todos los días a las 2 de la madrugada, se lanzará el script de actualización automática.

Como dije las funciones de las que podemos dotar a nuestro Bot son incontables, si os apetece ver en qué está enredando la gente, hay unos cuantos (mas de veintisiete mil) repositorios en github que ojear.

https://github.com/search?q=telegram+bot


Si te ha gustado el artículo, puedes invitarme a un café vía Paypal PayPal Logo