Ejecutar una aplicación (gráfica inclusive) en otra PC como otro usuario

Hola,

Esto es realmente útil, ya que mediante este tip podremos administrar otra PC, o bien, nos hará la vida un poco más fácil en determinados momentos.

Saben que si se conectan por SSH de PC#1 a PC#2 por ejemplo, e intentan abrir un programa como Firefox que se ejecute y muestre en PC#2, o bien algún reproductor de música o video, lo hacemos así:

usuario@pc2:~$ firefox

Mas, nos devuelve el siguiente error:

(firefox:1704): Gtk-WARNING **: cannot open display:

Bueno, aquí verán cómo abrir los softwares que deseemos, solucionando este error con solo un comando.

También (y en mi opinión esto es más interesante), supongamos que yo soy PC#1, accedo a PC#2 que es la PC de mi novia con el usuario kzkggaara por ejemplo, luego deseo que a ella (usuario cc) se le muestre una notificación (como las que aparecen cuando subimos o bajamos el volúmen, etc) que diga “Deja de escuchar Enrique Iglesias!!!” jeje… veremos cómo hacerlo, sin necesidad de sabernos el password de su usuario (cc en este ejemplo).

Para acceder por SSH con nuestro usuario (kzkggaara en este ejemplo) a PC#2 (con dirección IP = 192.168.151.209) ponemos algo así:

  • ssh kzkggaara@192.168.151.209

Ahora, una vez dentro de nuestro usuario deseamos ejecutar un reproductor de video por ejemplo, el que viene instalado por defecto en Ubuntu es Totem, usaremos este para explicar.

Si ponemos simplemente en la terminal “totem” nos dará el error antes mencionado, ya que antes de ejecutar la aplicación debemos poner la siguiente línea:

  • export DISPLAY=:0.0

Poniendo esta, ya se soluciona el problema jeje. (si les aparece algún error cambien “0.0” por “1.0“) Entonces, los pasos para ejecutar totem serían:

  1. export DISPLAY=:0.0
  2. totem

Y listo.

Si luego queremos cerrar totem simplemente ponemos:

  • killall totem

Ahora, supongamos que queremos ejecutar también, un navegador como Firefox, ya no tendremos que escribir la primera línea de nuevo (export DISPLAY=:0.0), simplemente ponemos:

  • firefox

Y problema resuelto 😉

No obstante, si salen de la sesión y vuelven a entrar por SSH a PC#2, tendrán que escribir la línea referente a export.

Ahora… lo más interesante según mi parecer:

Ejecutar aplicaciones en el escritorio de otro usuario:

Ya estamos conectados por SSH a PC#2, accedimos con el usuario kzkggaara y lo que deseamos es que se le muestre al usuario cc una notificación (como las que aparecen cuando subimos o bajamos el volúmen, etc) que diga “Deja de escuchar Enrique Iglesias!!!

Para poder enviar notificaciones de forma manual, debemos instalar un paquete llamado libnotify-bin, para instalarlo ponemos en la terminal:

  • sudo apt-get install libnotify-bin

Y listo. Ahora, crearemos un pequeñísimo script con el comando:

  • sudo touch /opt/script.sh

Lo editaremos con:

  • sudo nano /opt/script.sh

Y en él escribiremos lo siguiente:

export DISPLAY=:0.0

notify-send “Deja de escuchar Enrique Iglesias!!!”

Guardamos y salimos con [Ctrl]+[X], y ahora le daremos permisos al script para que se ejecute:

  • sudo chmod +x /opt/script.sh

Y ahora solo falta ejecutar el script, pero lo ejecutaremos como el usuario cc, ya que lo que deseamos es que le aparezca esa notificación a ese usuario en específico. Nos movemos hacia el directorio que contiene el script:

  • cd /opt/

Y ahora lo ejecutamos:

  • sudo -u cc ./script.sh

Listo, esto sería todo.

Esto es completamente personalizable, pueden mostrarle un gedit que diga “Te hice hacking en la PC“, o lo que deseen, todo depende de cuánto sepan improvisar.

Nada, aquí termina el tutorial.

Cualquier error que les salga, problema, duda o pregunta, queja o sugerencia les agradecería que la comuniquen, las críticas constructivas siempre son bien recibidas.

Saludos y… sé que esto le será de utilidad a alguien ^_^


11 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   aer0 dijo

    supongo que te complicas demasiado las cosas al menos desde mi punto de viste, para hacer lo mismo que explicas en la primera parte simplemente al conectarnos al servido ssh agregamos el parámetro -X y después de autentificarse simplemente escribiendo el nombre de la aplicación se abrirá sin ningún error
    ejemplo

    ssh -X kzkggaara@192.168.151.209
    firefox

    y con esto nos evitamos estar haciendo el export…

    1.    KZKG^Gaara <° Linux dijo

      Hola y bienvenido al sitio 😀
      El problema es que, lo que deseo es escribir en una terminal «firefox» (por poner un ejemplo), y que esto se abra en esa otra PC sí, pero que también se muestre en su display/monitor, o sea, lo que yo ejecute en terminal que se le muestre al otro usuario en su PC, haciéndole entender o parecer que el ordenador «se ha vuelto loco» 🙂

      Si hago ssh -X $user@$ip y luego escribo «firefox» en esa terminal, la aplicación (firefox en este caso) se me abrirá a mí en mi monitor/pantalla, y en el monitor de ese otro ordenador (al que me conecté remotamente por SSH) no se mostrará nada.

      Al menos esto es lo que pude apreciar con el -X, si estoy equivocado por favor me aclaras la duda.
      Saludos y una vez más, bienvenido a nuestro sitio 😉

  2.   aer0 dijo

    Exactamente eso sucede si lo que pasa que yo entendí que eso era lo que se pretendía, pero ya veo que no es así bueno, al menos es una forma de abrir aplicaciones remotamente, aunque no sirve para bromear 🙂 y gracias por la bienvenida por aquí andaremos.

    1.    KZKG^Gaara <° Linux dijo

      Ese es el problema jejejeje, que para bromear no me funciona, pero para trabajar sí, porque el procesamiento y carga lo asume esa PC remota, mientras que es en mi display que se muestra la aplicación, buen tip 😉

      Saludos y nos leemos por acá 🙂

  3.   El pardo dijo

    Si le entiendo bien al procedimiento, ahora como obtengo la ip de la maquina 2 desde mi consola? se puede ?

    No se nada de redes que verguenza 🙁

    1.    KZKG^Gaara <° Linux dijo

      En la terminal pon: ifconfig
      Ahí podrás ver detalles de cada interfaz de red, o sea, si tienes LAN (red de cable), Wifi, o alguna otra.

      Donde dice «inet», ahí podrás saber la IP 😀
      Y no te preocupes, nadie nace sabiendo jajaja, todos aprendemos sobre la marcha.

      Saludos

  4.   semptrion dijo

    Gracias!!! eso exactamente estuve buscando…

  5.   david dijo

    y si lo quiisiera hacer desde la web utilizando php, además mostrando una imagen de la web, sin utilizar el script q creas, es decir algo así, cómo podría lograrlo???
    $imagen=»http://sitioweb.net/imagen.png»;
    $mensaje=»deja de escuchar enrique iglesias»;
    exec(«export display=:0.0 | notify-send $mensaje -i $imagen»);

  6.   alexweb dijo

    hola muy buenos consejos!
    con respecto a lo del ssh funciona si exportas el display.
    Al menos a mi me sale eso en la consola.

    Un saludo.-

  7.   lida dijo

    cuando se configura el archivo sshd_config es necesario modificar el x11Forwarding para poder realizar eso que estas haciendo? esa es mi duda

  8.   Ricardo Luis Ordaz Villalobos dijo

    Hola, tengo pregunta, ¿puede ser a la inversa? , por ejemplo, si yo estoy en PC1 sin firefox, y mi novia la PC2 con firefox, ¿podría ejecutar firefox de la PC2 y que aparezca la ventana del navegador en PC1 donde no esta instalado en navegador?