Hoy os voy a mostrar una forma muy cómoda y efectiva de mantenernos informados sobre las actualizaciones pendientes en nuestros servidores.
Utilizaremos un script de bash junto con un bot de Telegram para recibir las notificaciones.
El procedimiento es compatible con cualquier distribución que utilice apt
como gestor de paquetes.
Requisitos
- Una cuenta de Telegram. De lo contrario, tendremos que crearla (es necesario número de teléfono).
apt
como gestor de paquetes en tu sistema. Si utilizas un gestor diferente, deberás adaptar este script.curl
instalado.- Poder ejecutar comandos como
root
(ya sea como usuarioroot
directamente, o consudo
odoas
). En mi caso lo haré comoroot
(usandosu -
).
Creación del bot y obtención del token
Procedimiento a seguir:
-
Inicia un chat con BotFather: @BotFather es un bot oficial de Telegram que te ayudará a crear y gestionar el tuyo. Puedes encontrarlo en Telegram utilizando el campo de búsqueda:
No debemos confundirnos y abrir el equivocado. El oficial es el único con el alias @BotFather, además del sello de cuenta verificada.
-
Crea un nuevo bot: En el chat con BotFather, toca
INICIAR
y luego envía el comando/newbot
para iniciar el proceso de creación. Sigue las instrucciones de BotFather. -
Asigna un nombre y un alias (@) a tu bot: Después de crear el bot, BotFather te pedirá que elijas un nombre y alias para tu bot. El alias debe terminar en “bot”.
-
Guarda el token: Como podemos ver en la captura superior, una vez completado el proceso de creación, BotFather te proporcionará un token de acceso único para tu bot. Asegúrate de copiar este token y mantenerlo en un lugar seguro, por dos razones, porque lo necesitarás para que el script pueda interactuar con la API de Telegram y porque cualquiera que tenga el token podrá enviar mensajes desde tu bot.
¡Listo! Ya tenemos nuestro bot de Telegram disponible.
Obtención del ID de chat
Lo último que necesitaremos para poder ejecutar el script será el ID de nuestro chat (o del chat donde queramos que el bot nos envíe los mensajes).
Para conseguirlo:
-
Abrimos en un navegador la siguiente URL, sustituyendo
<BOT_TOKEN>
por el token que nos dió antes @BotFather:https://api.telegram.org/bot<BOT_TOKEN>/getUpdates?offset=0
-
Abrimos un chat nuevo con nuestro bot recién creado. Tenemos el enlace directo a su chat en el mismo mensaje donde @BotFather nos dio el token:
-
Refrescamos la página que abrimos en el paso 1 en nuestro navegador:
-
Tras refrescar la página podremos copiar el ID de nuestro chat con el bot y anotarlo para usarlo en el script.
Configuración y uso del script
El script que utilizaremos está disponible en mi repositorio de GitHub: JuanJesusAlejoSillero/apt-updates-telegram
Sigue estos pasos para configurar el script:
-
Accede como
root
y clona este repositorio en tu sistema:su - git clone https://github.com/JuanJesusAlejoSillero/apt-updates-telegram.git
-
Edita el archivo
apt-updates-telegram.sh
y modifica las siguientes variables con tus valores:- BOT_TOKEN: El token de tu bot de Telegram.
- CHAT_ID: El ID del chat donde deseas recibir las notificaciones.
nano -cl apt-updates-telegram/apt-updates-telegram.sh
-
Dale permisos de ejecución al script:
chmod +x apt-updates-telegram/apt-updates-telegram.sh
-
Prueba su funcionamiento ejecutándolo manualmente:
./apt-updates-telegram/apt-updates-telegram.sh
Tras la ejecución recibirás un mensaje informándote de las actualizaciones disponibles, o, en su defecto, de la ausencia de estas:
⭐️ Por favor, si te ha sido útil el script considera darle una estrella al repositorio de GitHub y/o compartirlo para que llegue a más gente: ⭐️
Programar la ejecución del script
Con el script operativo, procederemos a crear un timer de systemd que se ocupe de ejecutarlo de forma periódica. Yo lo configuraré para que sea cada 8 horas concretamente, para más información: systemd.time(7) — Arch manual pages
-
Accedemos como
root
si no lo somos y creamos el fichero de unidad parasystemd
:su - nano -cl /etc/systemd/system/apt-updates-telegram.service
-
Lo rellenamos con la siguiente configuración, asumiendo que la ruta al script es
/root/apt-updates-telegram/apt-updates-telegram.sh
:[Unit] Description=Ejecuta el script apt-updates-telegram.sh [Service] Type=simple ExecStart=/root/apt-updates-telegram/apt-updates-telegram.sh Restart=on-failure [Install] WantedBy=multi-user.target
-
Creamos el timer:
nano -cl /etc/systemd/system/apt-updates-telegram.timer
Contenido:
[Unit] Description=Ejecuta apt-updates-telegram.service cada 8 horas [Timer] OnCalendar=00/8:00 Unit=apt-updates-telegram.service [Install] WantedBy=timers.target
-
Recargamos los demonios de systemd:
systemctl daemon-reload
-
Habilitamos e iniciamos el timer:
systemctl enable --now apt-updates-telegram.timer
-
Podemos revisar el funcionamiento de ambos con:
systemctl status apt-updates-telegram.service systemctl status apt-updates-telegram.timer
Cierre
Espero que este post os sea tan útil como lo ha sido para mí.
En el futuro seguiré mejorando el script, si crees que puedes ayudarme a mejorarlo o incluir alguna función que te gustaría que tuviera, envíame una pull request o contacta conmigo a través de mis redes sociales o email.
Hub con mis redes sociales e email: https://hub.juanje.net
✒️ Documentación realizada por Juan Jesús Alejo Sillero.