Para ello decidí no limitarme a mandar un "alert" cuando se pierde el ping, sino que lanzo un script que hará más ruido:
check host punto-wifi with address 192.168.0.1
if failed icmp type echo count 3 with timeout 5 seconds then exec "/usr/local/bin/aviso-wifi"
1. Avisos multicanal.El script aviso-wifi usa distintos tipos de aviso por diferentes cauces:
# cat /usr/local/bin/aviso-wifi
#!/bin/bash
MENSAJE="Otra vez desconectado $(date)!"
#Log del sistema
echo $MENSAJE >> /var/log/wifilog.log
#Correo
mailsend -to destinatario@gmail.com \
-from emisor@gmail.com \
-ssl -smtp smtp.gmail.com -port 465 \
-sub "Aviso" \
-M "$MENSAJE" \
+cc +bc -q -auth -user "emisor@gmail.com" -pass "mipassword"
#Mensaje push al móvil android
PUSHKEY="APcdkK"
curl --data "key=$PUSHKEY&title=Aviso&msg=$MENSAJE" https://api.simplepush.io/send
#Mensaje SMS al móvil android
MOVIL="+34855123456"
curl -X POST https://textbelt.com/text \
--data-urlencode phone="$MOVIL" \
--data-urlencode message="$MENSAJE" \
-d key=textbelt
exit 0
Los distintos métodos usados son:- Guarda un registro en /var/log/wifilog.log.
- Envía un correo mediante gmail usando mailsend, que tendríamos que instalar previamente.
- Envía un mensaje push a nuestro móvil mediante la aplicación simplepush.io, que saltará de forma inmediata. Es tan sencillo como instalar esta aplicación en el móvil y poner en el script la PUSHKEY que nos aparece al abrirla, que identifica nuestro móvil de forma única como destinatario.
Como pequeño inconveniente tenemos que los mensajes son gratuitos los 7 primeros días, luego hay que comprar la aplicación (cuesta unos merkels) para poder recibir mensajes. Se pueden establecer alarmas sonoras distintas en función de diversos tipos de mensajes push. - Por último, por volver a los 90, mandamos un SMS a nuestro móvil (+34855123456, es un número ficticio, pon el tuyo empezando por +34). Este servicio de textbelt permte mandar un único SMS al día gratis, pero si nos resulta útil podemos comprar paquetes SMS prepago.
Tanto simplepush.io como textbelt son dos de los muchos servicios push y SMS que hay. Yo he puesto estos porque los encontré pronto y me resultaron fáciles de usar mediante sencillas peticiones web con el comando curl.
Por supuesto, se podría ampliar el script con otros medios de aviso, por ejemplo mensajes telegram o cualquier otro sistema que se pueda hacer mediante scripts.
2. Avisos sonoros.
Un escalón mas es hacer sonar un aviso por los altavoces del PC del aula donde se detecta el evento, para que si es especialmente grave el usuario tome medidas. El script sería:
# cat /usr/local/bin/aviso-audio
#!/bin/bash
#Subimos el volumen al máximo en el alsamixer
amixer set Master unmute
amixer set Master 100%
#Si hay un usuario logado, conectamos con su pulseaudio para subir el volumen al máximo
user=$(who | grep "(:0)" | head -1 | cut -f1 -d" ");
if [ -n "$user" ]
then
su $user -c "DISPLAY=:0 pactl set-sink-volume 0 150%"
su $user -c "DISPLAY=:0 pactl set-sink-mute 0 0"
fi
#Si esta instalado placasiatic es una siatic y podemos encender por comando la barra de sonido.
test -f /usr/sbin/placasiatic && placasiatic sonido up
if [ -n "$user" ]
then
while true
do
ffplay /root/scripts/locucion.mp3 -nodisp -nostats -hide_banner
su $user -c "DISPLAY=:0 zenity --info --width 400 --height 100 --title='Desconexion de sistema' --text='Avise al administrador informatico de forma urgente.'"
done
else
ffplay /root/scripts/locucion.mp3 -nodisp -nostats -hide_banner -loop 0
fi
exit 0
Comentamos:- Con amixer quitamos el mute (silencio) y subimos al 100% del volumen del canal de audio Master.
- Si hay un usuario con sesión iniciada, conectamos con su instancia pulseaudio para subir al máximo el volumen allí mediante pactl y hacer unmute.
- Si estamos en una Siatic encendemos la barra de sonido mediante el relé. Esto garantiza que si el usuario ha apagado la barra la encendemos de nuevo usando la utilidad placasiatic. Por supuesto, si los altavoces del PC son convencionales y están apagados físicamente en su interruptor, no saldrá nada de sonido. Es algo que puede pasar y para lo cual no tenemos solución.
- Por último, se reproduce una locución en bucle infinito codificado en mp3 mediante ffplay. Si hay usuario con sesión iniciada se muestra además un mensaje de texto en su escritorio mediante zenity.
- La locución se puede generar fácilmente con texttomp3.
nohup /usr/local/bin/aviso-audio >/dev/null 2>&1 &
Cuando lo extraordinario empieza a ser habitual es señal de que se está haciendo bien: SpaceX ha lanzado una nueva carga de satélites Starlink.
Se lanzan 60 microsatélites Starlink (que mientras se van desplegando en las próximas semanas se podrán ver como un tren por el cielo nocturno una vez más), la etapa inicial del Falcon reutilizado por cuarta vez aterriza en la plataforma barcaza Of Course I Still Love You y la cofia se reutiliza por primera vez y se recupera mediante un barco.
Y todavía hay gente que afirma que todo lo relacionado con Elon Musk es humo.
No hay comentarios:
Publicar un comentario