ver trafico servidor para interfaz grafica example ejemplos comandos comando linux ssh cron x11

linux - trafico - Cómo ejecutar un programa X desde fuera de la sesión X(por ejemplo, desde la consola o SSH)



ssh interfaz grafica ubuntu (2)

El resultado es que debe conocer la pantalla X (colocada en la variable de entorno DISPLAY ) y la cookie mágica (colocada en un archivo, con el nombre de archivo en la variable de entorno XAUTHORITY ).

La manera rápida y sucia

En el sistema que ejecuta X, si es root o si es el mismo usuario que inició sesión en X, simplemente asuma los archivos de pantalla y cookies más comunes (funciona en casi cualquier instalación de escritorio estándar de cualquier distribución).

env DISPLAY=:0 XAUTHORITY=/home/whoever/.Xauthority /path/to/my/X/program

La manera más segura

Encuéntrelos en el entorno de un programa X ya en ejecución. Nuevamente, si es usuario root o el mismo usuario que inició sesión, esto le indicará (si el usuario está usando GNOME):

cat /proc/`pgrep -f ^x-session-manager`/environ / | ruby -ne ''puts $_.split("/0").select { |e| e =~ /^(DISPLAY|XAUTHORITY)=/ }''

Sin ser la persona que inició sesión en la consola, ¿cómo ejecuto una aplicación X y la visualizo en esa sesión X? Supongamos que soy root, o que soy el mismo usuario que inicié sesión, por lo tanto, en principio tengo permiso para hacerlo. ¿Pero cómo convenzo a X de esto?

Algunos ejemplos de situaciones como esta:

  • Inicie sesión con SSH y ejecute un programa que se muestra en la pantalla de la computadora remota ( no en túnel a través de SSH, eso es totalmente diferente)
  • Un trabajo de cron para tomar una captura de pantalla de la sesión X a través del comando de import de ImageMagick
  • Ejecución de un registrador de pulsaciones de teclas para fines de auditoría

Esta es una versión más simple de la aplicación Launch OpenGL directamente desde un terminal Linux sin ventanas


La respuesta corta es que debe establecer la variable de entorno DISPLAY y luego se ejecutará la aplicación.

La respuesta larga es que tenemos Xauth, ya menos que esté ejecutando como el mismo usuario en la misma máquina que probablemente no vaya a funcionar a menos que exporte la credencial Xauth de la cuenta que ejecuta el servidor X a la cuenta que ejecuta la X cliente. ssh -X maneja esto para usted, por lo que es increíble, pero el procedimiento manual implica ejecutar xauth extract - $DISPLAY en la cuenta del servidor X y alimentar esos datos en xauth merge - en la cuenta del cliente. (Advertencia: los datos son binarios)

En los sistemas Linux modernos, hay una sesión X en: 0 y el archivo de datos de autoridad X11 siempre es $HOME/.Xauthority para que pueda establecer con más frecuencia dos variables de entorno, por ejemplo, en Bash:

export XAUTHORITY=/home/$your_username/.Xauthority export DISPLAY='':0''