Configurar DISPLAY=:0 no tiene ningún efecto para notificar-enviar a través de ssh

Configurar DISPLAY=:0 no tiene ningún efecto para notificar-enviar a través de ssh

Tengo acceso ssh a la computadora de mi compañero de piso (Ubuntu 14.04). Quiero enviarle un mensaje a través de ssh, por eso uso este comando

export DISPLAY=:0 && notify-send "sample message"

El comando sale con 0, pero no ve ningún mensaje. Por otro lado, cuando usoexportar PANTALLA=:0y por ejemploxterm, el xterm normalmente se abre. libnotificarestá instalado, cuando ejecutonotificar-enviarlocalmente, se nota. Además, cuando intento este comando a través de ssh en otra computadora, funciona.

¿Alguna idea, por qué sucede esto, por favor? Gracias

Respuesta1

notify-send necesita tener credenciales de sesión para poder enviar notificaciones dentro de la sesión de sus amigos. Estos se almacenan en variables de entorno incluidas en una sesión cuando inicia sesión, esto evita que procesos en segundo plano no autorizados arruinen su escritorio.

Una manera fácil de hacer que estas credenciales de sesión estén disponibles (y subvertir completamente la seguridad del escritorio) es hacer que la sesión del escritorio inicie una sesión de pantalla y luego la ponga en segundo plano.

Luego puede acceder a él mediante ssh, conectarse a la sesión de pantalla y luego su notificación y envío funcionará. Si haces esto, asegúrate de que tu compañera de piso sepa que tienes acceso total a su escritorio y a sus archivos.

Para configurar la sesión de pantalla:

Desde el tablero, ejecute 'Aplicaciones de inicio'

Haga clic en Agregar, asígnele un nombre e ingrese lo siguiente en el comando:

screen -dmS desktop_session

Luego cuando te conectas vía ssh

screen -r desktop_session
notify-send "Insecure message"

Luego puede ejecutar cualquier comando y hacer que su resultado gráfico aparezca en esa sesión de escritorio.

Deberá hacer esto de forma interactiva; si desea hacerlo de forma no interactiva, puede hacer que un script de shell sondee un archivo y, cuando tenga datos, envíelo para notificarlo. o simplemente utilice un cliente de mensajería instantánea.

Respuesta2

Tuve que hacer algo similar: ejecutaría una actualización en una computadora pero quería enviar una notificación en otra computadora. Solía sshpass​​:

sshpass -p user_password ssh -X user_name@ip_address DISPLAY=:0 notify-send "The message"

dónde reemplazaría user_passwordy user_namepara ip_addresssu usuario/máquina específica.

información relacionada