Notificaciones vía Telegram


#1

Realizando una actividad en mi maquina se me ocurrió enviar notificaciones vía Telegram al finalizar ciertos procesos para no tener que estar siempre pendiente.

#! /bin/bash

BOT_NAME="MiBot"
BOT_TOKEN="<Aqui va el Token del Bot>"
BOT_DATE=$(date +"%d.%m.%Y")
BOT_TIME=$(date +"%r")
BOT_HOST=$(hostname -f)
BOT_TEXTO=$(cat <<MENSAJE
$1
---
Enviado por: <b>$USER</b> <i>($BOT_HOST)</i>
El $BOT_DATE a las $BOT_TIME
MENSAJE
)

curl --silent --output /dev/null \
     --data-urlencode "chat_id=<AQUI_TU_ID>" \
     --data-urlencode "text=$BOT_TEXTO" \
     --data-urlencode "parse_mode=HTML" \
     "https://api.telegram.org/bot$BOT_TOKEN/sendMessage"

notify-send "Notificacion enviada via $BOT_NAME!"

El uso seria así:
sudo pacman -Syu ; sh miBot.sh 'Sistema ArchLinux Actualizado!!'

Eso nos daria lo siguiente:


Ahora es donde viene lo interesante, hay veces que toca trabajar con servidores bajo linux y las instalaciones no siempre son rápidas así que se pueden poner para notificar cuando terminen.

Otra cosa que estaba pensando es que se puede notificar si el servidor tiene algún valor anormal o leer las alertas del sistema y pasarlas por un script que envié el mensaje.


Solo para información, a diferencia de los correos, telegram no tiene limites de relay así que puede enviar gran cantidad de mensajes al dia.

El script que hice simplemente funciona para mandar notificaciones cuando se lo asignemos, pero también se le pueden poner comandos al bot para que haga los chequeos remotos vía comandos (:


Raspberry PI 3 Model B
#2

Siguiendo un poco con este tema, ayer me puse a investigar y encontré proyectos interesantes como este, el cual esta escrito en python:

h_tp://blog.desdelinux.net/monitorear-tu-servidor-telegram/

Pero hoy estaba intentando probar enviar mensajes desde ABAP, pero simplemente ando probando códigos que encuentro por ahí xD
Como por ejemplo este:

h_tps://help.sap.com/saphelp_nw74/helpdata/en/b2/86b4512ea4414fb36f17b0568a86ac/content.htm
REPORT  ZHTTP_TEST_TELEGRAMBOT.

data:
  lo_http_client type ref to if_http_client.
  cl_http_client=>create_by_url(
    exporting
      url                = 'https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=PruebaABAP'
    importing
      client             = lo_http_client
    exceptions
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3
      others             = 4 ).
  if sy-subrc <> 0.
    WRITE 'ERROR'.
  endif.

Pero como no hace nada, no se si es tema del código o conectividad del servidor o error de capa 8 :thinking:

P.D: como no es algo necesariamente de SAP (trabajo) y solo son pruebas no lo pongo en un nuevo tema de consulta :sweat_smile:


#3

muy interesante pero en mi empresa solo trabajan con servidores windows xD tendremos el hana en linux, pd: ya tengo el servidor en físico y un paquete que llego me imagino es algo de S.O pero no puedo abrirlo hasta que lleguen los consultores el 14 de noviembre :confused: igual no creo que me dejen instalarle nada al servidor ya que si se le mueve a la base de datos perdemos la garantía del proveedor


#4

Yo lo hice en linux porque es lo que tengo pero puedes hacer un .bat o inlcuso hacerlo en otros lenguajes.

Simplemente tienes que apuntar a esta url con los datos de tu bot

https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=<TEXTO>

Por ejemplo, yo tengo bots en PHP pero a esos si los tengo para hacer consultas vía comandos (se necesita que el host tenga ssl)


No entiendo porque debería pasarle algo a la Base de Datos xD
Con respecto a que no te dejen tocar el servidor tienes que preguntarlo bien, igual como encargado de IT deberías instalarle algunos programas de respaldo como por ejemplo Acronis o los programas que manejen de seguridad.

Pero eso deberías preguntárselo a los consultores desde ahora para ir viendo opciones. (:


#5

ellos hacen los respaldos cada mes, a lo que ellos se referían es a conectar un programa que yo haga para hacer consultas o cosas asi, que afecten o jalen datos de la base de datos, según tengo entendido el respaldo lo van a dejar configurado para que pueda hacer respaldos con un clic xD


#6

me encanta a mi usar TELEGRAM es a mi gusto la mejor aplicacion de mensajeria


#7

Reviviendo un tema viejito :eyes:

Se pueden hacer cosas entretenidas, incluso estoy pensando en poner comandos como:
/info para obtener información de Windows como el uptime, ram y cpu.
/captura para que el bot me pase una captura de pantalla.

:thinking: alguna idea interesante para controlar la PC desde un bot?


#8

Muy interesante y útil tu post @nicolasegp !! :clap:


#9

Hola Nicolas,
Me encontré con esto de los bots de Telegram, y estoy fascinado!!
En este momento estoy con PHP “enseñándole” algunas cosas a mi bot.

Todo comenzó con una Raspberry y el proyecto de domótica para mi casa, ya consigo darle órdenes a la Rasp desde la web pero me faltaba que la Rasp me pueda notificar cosas, primero pensé desarrollar una app de Android pero requiere crear una cuenta de developer, pagar, etc, así que continué buscando y llegué a los bots. Veo que al tuyo le enseñaste a abrir SAP, genial!

La pregunta que no he tenido tiempo con Google ¿Sabés si podemos hacer lo mismo o parecido con whatsapp?

Muchas gracias,
Ricardo


#10

Hola @ragisbert pues en whatsapp no hay, los bots que existen son capturadores de información en una máquina virtual con Android y WhatsApp.

La plataforma debe contar con bots como lo es Telegram, Messenger (Facebook), Slack, Discord, etc.

Con PHP uso los webhooks y esta class https://github.com/Eleirbag89/TelegramBotPHP que es bastante completa

Para Windows (el video) uso un lenguaje super sencillo llamado Autoit, por lo cual puedo ejecutar programas, usar dispositivos como la cámara, enviar notificaciones de escritorio, etc. Para Autoit no uso webhook asi que tengo que leer cada x seg los últimos mensajes

Una aplicación practica en SAP seria levantar o bajar instancias por un comando, o incluso ver el estado de la instancia via stdout.

También tengo un bot con PHP que me respalda las base de datos MySQL de unos clientes, todos los dias a las 0h y me lo envia a un channel privado.

(Telegram soporta 1.5GB por archivo)

P. D. : Cada usuario de telegram tiene un ID, asi que en vez de usar una interfaz web puedes usar telegram y que la acción se realice únicamente si eres tu quien envia la orden

Saludos (:


#11

Gracias por la info!!
Adicionalmente te pregunto, ¿Cómo tendría que hacer para que corra tipo daemon en la Rasp?
Creé algo de código en PHP ya que estoy aprendiendo sobre el lenguaje, pero me falta saber cómo mantenerlo corriendo siempre, o si tendría que agregar a algún daemon que abra el PHP (con eso bastaría)

Saludos!


#12

PHP es de tipo cli, lo ideal para que siempre está corriendo es instalar Apache o Nginx los cuales procesan las solicitudes, si ejecutas PHP por línea de comando mediante un daemon simplemente ejecutaran la orden y se cerrará a menos que uses websockets.


Para instalar un web server te recomiendo buscar como instalar LAMP (Linux, Apache, MySQL, PHP) que es lo más sencillo.


Si vas a correr PHP a modo cli para que ejecute un script únicamente (me imagino que estas usando NOOBS o Raspbian lo cual es linux, pero no me acuerdo que entorno usa) puedes hacer lo siguiente:

Si es LXDE:

/home/TU-USER/.config/lxsession/LXDE-pi/autostart

y le agregas la siguiente línea:

@php -f /home/TU-USER/archivo.php > salida.html

En caso de no ser LXDE puedes ver qué entorno es y buscar el archivo de autoarranque o puedes agregar el comando directamente en el final del archivo .bashrc

/home/TU-USER/.bashrc
php -f /home/TU-USER/archivo.php > salida.html

Cualquier cosa me avisas!
Saludos (: