# cat /usr/bin/mensaje-escritorio.sh
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Uso de parámetros incorrectos"
echo " $0 'Internet será cortado a las 12.30 durante media hora\'"
echo " Formato de mensaje en Pango Markup Language"
exit 1
fi
fecha=$(date "+%H:%M. %d-%m-%Y")
mensaje="\n\n\nAtención: \n\n$1."
DISPLAY=:0 XAUTHORITY=/var/run/lightdm/root/\:0 zenity --display=:0 --info --text="$mensaje" --title="Aviso ${fecha}" --width="800" --height="600" --ok-label="OK"
exit 0
Básicamente, desde consola o desde una conexión ssh mostramos en el escritorio gráfico un mensaje, que se pasa como parámetro y que ocupará la mayor parte de la pantalla. Si no hay sesión abierta el mensaje se mostrara en la pantalla de inicio de sesión. Por ejemplo:
# mensaje-escritorio.sh "Por favor, cierre la sesión ya que se va a reiniciar el servidor dentro de los próximos <span foreground='red'><b>5 minutos</b></span>"
Se mostrará:
Como podemos observar, el mensaje puede tener formato (negrita, tamaños, colores,...) usando el Pango Markup Language, un lenguaje de marcado sencillo que permite dar formato a textos al mostrarlos en pantalla.
Ahora bien, ¿que pasa si queremos enviar el mensaje a varias máquinas a la vez?. Pues sería con este script:
# cat /usr/bin/multi-mensajes.sh
#!/bin/bash
#Parametros
# $1=mensaje
# $2=lista maquinas
if [ $# -ne 2 ]
then
echo "Número incorrecto de parámetros"
echo " $0 \"Atencion, cierren sesión\" \"spro-o01 a02-pro a04-pro\""
echo " Formato de mensaje en Pango Markup Language"
exit 1
fi
clave="password1234"
for maquina in $2
do
sshpass -p${clave} ssh -o StrictHostKeyChecking=no root@$maquina "/usr/bin/mensaje-escritorio.sh \"$1\" > /dev/null 2>&1 " &
done
exit 0
Por ejemplo, para mostrar un mensaje en el escritorio de 4 máquinas:
# multi-mensajes.sh "Por favor, cierre la sesión ya que se va a reiniciar el servidor dentro de los próximos <span foreground='red'><b>5 minutos</b></span>" "spro-o01 spro-o02 a02-pro a05-pro"
Si lo hacemos muy a menudo podría ser interesante usar el comando dsh en lugar de hacer llamadas ssh individuales. Incluso podemos valorar establecer relaciones de confianza SSH para evitar tener que indicar la clave de root en cada llamada.
Bien, pues con esto tenemos una herramienta para mandar mensajes emergentes remotos desde una máquina a cualquier otra máquina del centro.
No hay comentarios:
Publicar un comentario