GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿Cómo enviar un mensaje al usuario local que inició sesión en X11?

El xmessage tool te permite hacer exactamente eso; presentar una ventana emergente a los usuarios con un mensaje de texto dentro.

Ejemplo:usuario2 inicia sesión en una sesión BASH en el cuadro y emite:

export DISPLAY=':0.0'
xmessage "some message here"

si inicia sesión en una sesión de TSCH, sería algo como esto:

setenv DISPLAY ':0.0'
xmessage "some message here'

Alternativamente, puede enviar mensajes a sesiones de terminal de una de estas dos maneras:

Usando wall (=advertir a todos los [usuarios])

De la página del manual:
Wall muestra el contenido del archivo o, de forma predeterminada, su entrada estándar, en los terminales de todos los usuarios conectados actualmente.

Si desea dirigirse a un usuario específico, use write . Nuevamente, el hombre nos dice:

La utilidad de escritura le permite comunicarse con otros usuarios copiando líneas de su terminal a la de ellos.


Por regla general, las sesiones X11 suelen iniciarse en modo "privado", por lo que necesita una de dos cosas:la cooperación de user2 para permitirle acceder a sus pantallas, o privilegios de superusuario para "irrumpir" en sus pantallas.

PELIGRO: Tenga en cuenta que una vez que tenga acceso a su pantalla, también puede hacer cosas como capturar pulsaciones de teclas (posiblemente incluyendo contraseñas) y tomar capturas de pantalla, por lo que esto es un gran riesgo de seguridad.

En la mayoría casos, es preferible usar una herramienta de mensajería o un programa de chat para estas cosas.

Advertencias aparte:

Cooperación

Si user2 quiere permitir user1 para acceder a su pantalla, primero user2 debe emitir un comando como:

 xhost +si:localuser:user1

Esto podría agregarse potencialmente a un script de inicio de algún tipo; No conozco Fluxbox, pero supongo que tiene un rc o gancho de inicio de sesión.

Una vez que se haya emitido, user1 luego puede escribir a user2 la pantalla de , si pueden encontrarla.

Si user2 es consciente de esto, siempre puede enviarlo a user1 de alguna otra manera.

Encontrar la pantalla de otro usuario

En una estación de trabajo típica, es inusual tener más de uno o dos usuarios conectados; en cuyo caso, "adivinar" que la pantalla que desea es 0, 1 o tal vez 2 podría ser una solución viable.

Sin embargo, para una solución más completa, supongamos que tiene una máquina en la que muchos usuarios pueden iniciar sesión e intente encontrar el que desea.

for proc in /proc/[0-9]*/
do
     if [ Xorg = $(< $proc/comm ) ] 2>/dev/null && \
        [ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null
     then
        for subproc in $(
        do
            echo "user2 display=" $(perl -ne 'if (m,DISPLAY=(.*)\0,) { print $1 }' < $subproc/environ)
        done
     fi
done

entonces, user1 puede finalmente (usando el valor DISPLAY obtenido arriba; acabo de escribir :14.0 aquí…)

DISPLAY=:14.0 xmessage "Hello, user2"

Enviar una notificación en su lugar

En aras de la exhaustividad, lo siguiente funciona en el escritorio de Gnome, al menos. No sé si Fluxbox tiene un widget de notificación.

 DISPLAY=:14.0 notify-send "Hello, user2"

Esto tiene muchas más opciones de visualización fáciles de usar y probablemente aparecerá de una manera bastante más amigable en la pantalla del usuario.


Linux
  1. Cómo configurar y desactivar variables de entorno locales, de usuario y de todo el sistema en Linux

  2. Cómo cambiar un nombre de usuario en Linux

  3. Cómo agregar un usuario a un grupo en Linux

  4. Cómo configurar banners de inicio de sesión en Linux (RedHat, Ubuntu, CentOS, Fedora)

  5. Cómo enviar un mensaje de Facebook desde la consola de Linux (línea de comandos)

Cómo agregar un usuario a un grupo en Linux

Cómo iniciar en la línea de comandos de Linux

Cómo cambiar de usuario en Linux

Cómo ver los usuarios registrados en Linux

Cómo agregar un usuario a un grupo en Linux

Cómo agregar un usuario a un grupo de Linux