Enviar mensajes entre las terminales, y/o usuarios conectados por SSH
Enviado por miguelcarmona :: 2 de octubre de 2012
En algún que otro día he necesitado enviarle un mensaje, notificación o aviso a los usuarios que están conectados por SSH a un servidor, por ejemplo; avisando que el servidor dentro de 5 minutos se reiniciará… o algo así.
En ese momento me he visto en el dilema, ¿cómo hacer que ellos sepan esto de forma inmediata? … mediante email demorará, y depende de que todos y cada uno de los usuarios lea el email, por mensajería instantánea (IM) no es factible, pues no siempre todos están online, en fin… todo un problemilla
Y un buen día llegó la solución … comando wall
Una línea tan simple como:
echo "El servidor será reiniciado en los próximos 5mins, guarden sus trabajos." | wall
Y listo! … esto enviará ese mensaje a TODOS los usuarios que estén conectados por SSH al servidor, pero… no solo eso. Suponiendo que es un ordenador y no un servidor (o sea, que tiene entorno gráfico), veremos también el mensaje en la terminal que tengamos abierta, así como en el área de notificación:
Pero… ¿qué hacer si deseo enviar un mensaje a solo una terminal o sesión SSH?
En ese caso debemos conocer qué sesión es con la que deseamos comunicarnos. Para ello usamos lo que el mismo sistema nos brinda.
1. Primero debemos saber a qué terminal deseamos mandar el mensaje, para ello escribimos en una terminal : w (sí… solo la letra w). Nos aparecerá lo siguiente, y con esa información veremos a qué terminal deseamos contactar:
En este ejemplo, deseo enviar un mensaje al tty2 (el primero que ven).
2. Ahora pasamos al comando:
echo "Esto es un mensaje de prueba" > /dev/tty2
Y esto bastará para lograr lo que deseamos, en la TTY2 aparecerá ese texto.
Si en vez de enviarlo ahí, deseamos enviarlo a pts/2 … simplemente:
echo "Esto es un mensaje de prueba" > /dev/pts/2
vía: http://blog.desdelinux.net/enviar-mensajes-entre-las-terminales-yo-usuarios-conectados-por-ssh/