LinuxParty
Como ya sabéis, Telegram es de mis aplicaciones favoritas. Y no solo por todas las características a la hora de enviar mensajes, almacenar archivos, etc… si no que gracias a la sencilla api de Telegram, puedo crear mis bots para que notifiquen todo tipo de cosas que suceden en mi raspberry, servidor, pc…
Si, pero… ¿Que nos puede notificar?
Voy a mostraros algunos ejemplos que yo utilizo:
- Notificación al iniciar un servidor
- Notificación cuando alguien se conecta vía SSH, mostrándome la IP del dispositivo que se conecta
- Cuando ha finalizado la ejecución de un script. Por ejemplo una sicronización con rsync, copia de seguridad…
Gracias a cron, podemos programar mensajes a determinados momentos del día para que nos notifique:
- Consumo de Ram
- Temperatura de la Raspberry
- IP pública de mi red
- Mis tareas pendientes en mi OrgMode
Estos son tan solo unos ejemplos que yo utilizo, pero con un bot de Telegram, puedes hacer tanto como imagines.
Incluso mi Router con OpenWrt, va enviándome mensajes, jejeje
Durante mucho tiempo he estado utilizando Bots desarrollados en Python, pero en este Post voy a explicaros como hacerlo desde de Bash que es muchísimos más sencillo. De momento vamos a enviar mensajes de Texto.
Primer paso para crear un Bot
Voy a explicar en sencillos pasos como crear un Bot con @BotFather, que es el padre de todos los Bots, creado por Telegram con el fin de facilitar la creación de estos:
- Clicamos este enlace @BotFather e iniciamos el Bot.
- Seleccionamos o escribimos /newbot. Nos preguntará: ¿Que nombre quieres dar a tu bot?. Escribimos un nombre.
- El Bot nos respone ahora: ¿Que nick quieres usar para este bot?, recuerda que el nick debe de acabar en bot o _bot. ejem: @nick_bot, @nickbot,…
- @BotFather ya nos ha creado el bot!!!. Ahora ya tenemos nuestro numero de Token para poder utilizar nuestro bot.
Si escribimos en @BotFather: /setuserpic, podremos elegir una foto para nuestro bot. Hay muchas mas opciones como añadir una descripción y demas, pero eso ya os lo dejo a vosotros…
Cada usuario en Telegram tenemos un identificador, ID. Podemos saber el nuestro iniciando este bot @userinfobot.
Si queremos añadir el Bot en un Grupo o Canal, para que envíe mensajes o haga cualquier función, tendremos que averiguar el ID de ese Grupo o Canal. Para ello reenvía un mensaje desde el Canal/Grupo al Bot @ChannelIdBot.
Vamos a crear nuestro Bot
Lo primero que haremos, es confirmar que realmente podemos enviar mensajes con nuestro bot desde la terminal.
Aquí hacemos mención a "nano", como editor, pero puedes elegir tu editor preferido: vim, joe, kate, gedit...
Creamos el script:
nano mi_bot_telegram.sh
Una vez abierto nano, vamos a copiar el contenido añadiendo el TOKEN del bot y nuestro ID.
#!/bin/bash TOKEN="escribe tu token aquí" ID="escribe tu id aquí" MENSAJE="Esto es un Mensaje de Prueba" URL="https://api.telegram.org/bot$TOKEN/sendMessage" curl -s -X POST $URL -d chat_id=$ID -d text="$MENSAJE"
Ahora daremos permisos de ejecución:
sudo chmod +x mi_bot_telegram.sh
Vamos a ejecutarlo:
sh mi_bot_telegram.sh
FUNCIONA!!!!!!!!
Si hemos escrito correctamente tanto el TOKEN como el número de nuestro ID, habremos recibido un mensaje en el chat del bot que hayamos creado con el contenido: Esto es un Mensaje de Prueba
Si somos un poco mas atrevidos o conocemos mejor bash, te abras dado cuenta que no era necesario hacer un script y podemos enviar el mensaje desde una única línea de Terminal. Sustituye añade el valor de las variables en la última línea del script así:
curl -s -X POST https://api.telegram.org/bot"30534591:AAH5d23KtktfTQSWJMT9CiuginbsFQiF_2nB4"/sendMessage -d chat_id="57384545" -d text="Esto es un Mensaje de Prueba"
Como puedes ver, he puesto unos valores inventados de muestra.
Muestra la Ip de la máquina que se conecta por SSH
Si utilizas Bash, sabes que cada vez que te conectas por ssh o inicias una nueva sesión en tu terminal, Bash lee el archivo .bashrc. En él, al final de este archivo de configuración, añadiremos la línea de nuestro Bot y dentro del mensaje de texto, en lugar de un mensaje escribiremos:
$(echo $SSH_CLIENT | awk '{ print $1}')
Quedaría de la siguiente manera:
curl -s -X POST https://api.telegram.org/bot"30534591:AAH5d23KtktfTQSWJMT9CiuginbsFQiF_2nB4"/sendMessage -d chat_id="57384545" -d text="Se acaba de contecta por ssh con la IP $(echo $SSH_CLIENT | awk '{ print $1}')"
Si quieres probar que realmente funciona desde tu terminal, escribe en ella:
echo $SSH_CLIENT | awk '{ print $1}'
Ip Pública
Vamos a conocer la IP pública y conectarnos directamente con nuestra Raspberry:
curl ifconfig.co
Como en el caso anterior, sustituiremos el texto plano por esto:
$(curl ifconfig.co)
Temperatura de tu Raspberry
Con este comando, tendré controlada la temperatura de mi raspberry y además, quedará guardado el historial en el chat del Bot:
/opt/vc/bin/vcgencmd measure_temp
Sustituye el texto del Bot por:
$(/opt/vc/bin/vcgencmd measure_temp)
Al Iniciar mi servidor
He creado una carpeta llamada "scripts" en el "Home" del usuario. Allí he creado el script del Bot llamado inicio.sh, con un mesaje de texto tipo:
Se ha iniciado mi Raspberry
Para que esto funciones, vamos a escribir en cron, que cada vez que inicie nuestro servidor, PC, raspberry,… Nos envíe el mensaje:
Escribe en la Terminal:
crontab -e
Y en la primera línea, escribiremos lo siguiente:
@reboot ( sleep 100 ; sh $HOME/scripts/inicio.sh )
Esto significa que tras 100 segundos después del inicio de nuestro servidor, pc, raspberry,… ejecutará el script inicio.sh, de manera que nos enviará el texto que pusimos en el script "Se ha iniciado mi Raspberry".
Conclusión
Espero que te haya gustado este Post y Podcast. Ahora te toca a ti experimentar y juguetear con tu Bot de Telegram. Comenta tu experiencia en el Grupo de uGeek en Telegram.
Fuente: GitHub
-
Programación
- Thomas E. Kurtz, coinventor de BASIC, muere a los 96 años
- Profesor de informática del MIT prueba el impacto de la IA en la formación de programadores
- Lanzamiento del IDE de código abierto Qt Creator 14 con soporte para complementos basados en Lua
- Plantillas para Joomla - Episodio 1: Plantillas, marcos y clubes o no...
- Este es el mejor libro que he visto para aprender a programar en Python en castellano desde cero, gratis y online
- ¿Deberían los niños seguir aprendiendo a programar en la era de la IA?
- La 'obsolescencia' de VBScript confirmada por Microsoft y su eventual eliminación de Windows
- El Gran Debate: ¿Deberían los Modelos de Inteligencia Artificial Ser de Código Abierto?
- El lenguaje de programación BASIC cumple 60 años
- El CEO de Nvidia dice que los niños no deberían aprender a programar
- 40 años de Turbo Pascal: recuerdos del dinosaurio codificador que revolucionó los IDE
- Los lenguajes de programación más populares y dónde aprenderlos.
- Top 5 de los principales lenguajes de programación para desarrollar aplicaciones de escritorio Linux
- Qt Creator 12 lanzado con complementos de grabación de pantalla y Explorador de compiladores
- 10 sitios web para practicar problemas de programación