🚧Comunicaciones servidor-móvil

Pushover

Pushover es una aplicación de notificaciones en tiempo real que permite recibir alertas en dispositivos móviles y de escritorio. Está diseñada para integrarse con sistemas, servidores y aplicaciones mediante una API sencilla, permitiendo enviar notificaciones push desde scripts, herramientas de monitorización (como Nagios o Zabbix) y otras plataformas automatizadas.

Características principales:

  • Compatible con iOS, Android y navegadores web.

  • API fácil de usar para integraciones con sistemas de monitoreo y automatización.

  • Soporte para prioridades y reintentos, asegurando que las alertas críticas sean atendidas.

  • Grupos y dispositivos múltiples, permitiendo recibir notificaciones en varios lugares simultáneamente.

Vamos a ver como configurar una notificación al móvil paso por paso:

  1. Primero, regístrate en la web para que te de el token de usuario (user key):

  1. Crea un token de aplicación:

Clica esta opción para ir al formulario de creación
Una vez aquí, rellena el formulario con los datos que consideres.

Al completar el proceso, arriba del todo del dashboard, tendrás el token de la app.

  1. Descarga la aplicación de pushover en tu móvil y haz login configurando un nombre para el dispositivo: https://pushover.net/clients

  1. Con ambos token crea un script:

sudo nano pushover_app.sh

Añádele el siguiente script con el token de la API y el username que hayas creado:

#!/usr/bin/env bash
# Este script mandará notificaciones a nuestro movil siguiendo la API
# Establecemos las variables:
_token='YOUR-API-TOKEN-HERE'
_user='YOUR-USER-KEY-HERE'
# Crearemos una función de bash para mandar notificaciones: 
push_to_mobile(){
	local t="${1:-cli-app}"
	local m="$2"
	[[ "$m" != "" ]] && curl -s \
	  --form-string "token=${_token}" \
	  --form-string "user=${_user}" \
	  --form-string "title=$t" \
	  --form-string "message=$m" \
	  https://api.pushover.net/1/messages.json
}

curl -s \
	  --form-string "token=aapnufyw99mwusvntmfygojq5abnmg" \
	  --form-string "user=ux8v6ivs1zjguy9cfm76hcedzyyazi" \
	  --form-string "title=hola" \
	  --form-string "message=marumba" \
	  https://api.pushover.net/1/messages.json

La explicación es la siguiente:

  • Se define una función llamada push_to_mobile que toma dos argumentos:

    • $1: Título de la notificación (t), si no se proporciona, usa "cli-app" por defecto.

    • $2: Mensaje de la notificación (m).

  • Si el mensaje ($m) no está vacío, se ejecuta curl para enviar una solicitud POST a la API de Pushover:

    • --form-string "token=${_token}": Envia el API Token.

    • --form-string "user=${_user}": Envia el User Key.

    • --form-string "title=$t": Establece el título de la notificación.

    • --form-string "message=$m": Contenido del mensaje.

    • URL de la API: https://api.pushover.net/1/messages.json

El uso de curl -s (modo silencioso) evita que se impriman mensajes innecesarios en la consola. Puede ver más info en la documentación.

A continuación, ejecutaremos el script:

source pushover_app.sh

Y lo testearemos enviando una notificación (el primer parámetro t es el título y el segundo parámetro m es el mensaje):

push_to_mobile "bash-notification" "This is a test. Job foo failed on $HOSTNAME @ $(date)"

  1. Recibirás una notificación en tu móvil a través de la app

Notificación en el móvil

Es posible también notificar por push y por correo a la vez (ten en cuenta que es necesario disponer de un servidor smtp, postfix por ejemplo), para ello haz uso del correo de notificaciones que te da y ejecuta el siguiente script:

#!/usr/bin/bin bash
# Variables del mail
subject="rsnapshot backup job failed at $HOSTNAME"
log_file="/path/to/my.log.txt"
from="webmaster@cyberciti.biz"
to="webmaster@cyberciti.biz"
# Arrancar diariamente un backup y generar un log
/usr/bin/rsnapshot daily  2>&1 | /root/bin/rsnapreport.pl > "${log_file}"
 
# Coger errores
status=$?
alogs="$(grep -E -wi '^ERROR:|ERROR|WARNING|WARNING:' $log_file)"
 
# Si falla, notificame
if [ $status -ne 0 ] ||  [ "$alogs" != "" ];
then
   mail -A "$log_file" -s "$subject" -r "$from" "$to" <<< "Backup script failed with error. Check attached log file"
fi

Falta probarlo!

Origen del tutorial:


🚧 Ntfy

Send push notifications to your phone or desktop via PUT/POST

🚧 Gotify

Un servidor simple pero muy efectivo de envío y recepción de mensajes / alertas.

Última actualización