notificar-enviar no funciona bajo ssh

10

Tal vez esto se responde en otro lugar, pero no lo vi.

Estoy ejecutando Ubuntu 14.04. Cuando hago SSH en mi máquina, por ejemplo:

ssh <user>@<machineip> notify-send "Hello"

No veo nada en el monitor donde estoy conectado a la máquina. Si yo uso el prefijo notify-sendcon DISPLAY=:0.0o DISPLAY=:0nada diferente sucede. Simplemente nunca veo ninguna notificación en la sesión actual.

¿Hay algún truco / cambio para que esto funcione?

En caso de que esto no esté claro, permítame reiterar: desde la computadora A, ingresé SSH en la computadora B. Dentro de la sesión SSH, deseo ejecutar notificación-envío para ejecutar en la computadora B. Espero que aparezca una notificación de tipo gruñido en el monitor de la computadora B.

aikeru
fuente
Para otras personas que encuentran esto como el mejor resultado a través de Google, DISPLAY=:0 notify-send 'hello'trabajó para mí (no para aikeru), intente eso antes de pasos más complicados.
Marcar el

Respuestas:

9

Creo que estás confundiendo las diversas tecnologías y cómo funcionan. No esperaría que el demonio de notificación de un sistema pudiera enviar mensajes a través de SSH. La configuración $DISPLAYes cómo X11 envía la salida de una aplicación a otra con fines de visualización, pero notify-sendenvía un mensaje real al demonio de notificación. Este mensaje se envía usando la libnotifybiblioteca.

extracto

libnotify es una biblioteca que envía notificaciones de escritorio a un daemon de notificación, como se define en la especificación de notificaciones de escritorio. Estas notificaciones se pueden utilizar para informar al usuario sobre un evento o mostrar algún tipo de información sin interponerse en el camino del usuario.

Fuente: https://developer.gnome.org/libnotify/

Enfoque por aplicación

Un método para unir los notify-sendmensajes al notificador de su sistema local es utilizar un enfoque como se describe en esta publicación del blog titulada: notificaciones IRC a través de SSH y libnotify . Este enfoque necesitaría ser personalizado por cada tipo de notificación que desee volver a enviar a su notificador local.

Tunneling libnotify sobre SSH

Para una solución más general libnotify-over-sshpuede ser más lo que estás buscando.

extracto

Este es un script perl de servidor cliente que escribí para que mi servidor esencialmente pueda enviar mensajes de libnotify a mi máquina local. Utilizo esto principalmente con weechat pero tiene una función para hacerlo más general. Al llamar al cliente con la etiqueta weechat, el servidor verifica el nombre de la ventana enfocada actual. Si comienza con weechat, las notificaciones se suprimen si no se llama a send-send.

Mostrar en el servidor remoto

Si, por otro lado, simplemente está tratando de usar notify-sendpara mostrar mensajes en un servidor remoto al que se ha sshconectado, es probable que deba seguir una de las sugerencias que se hicieron en este Q&A titulado: Uso de notificación-envío con cron . Aunque varias de las respuestas sugirieron que esto era innecesario, tuve que hacer lo siguiente como otros mencionaron en los comentarios en mi sistema Fedora 20 usando Cinnamon como mi escritorio para que todo funcione.

Para notify-sendcomenzar a trabajar tuve que establecer esta variable con el valor apropiado del entorno de escritorio del sistema remoto.

$ export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wzrbFpDUZQ,guid=82e5bffe1f819506faecc77a53d3ba73

En mi sistema pude hacer uso de un archivo que se mantiene para este propósito exacto.

$ ssh me@remote
$ source ~/.dbus/session-bus/6a34f24f9c504e3f813bc094ed0b67af-0
$ notify-send "hi"

NOTA: El nombre del archivo DBUS cambiará de sesión a sesión.

slm
fuente
Hmmm ... agregué algunas aclaraciones. No quiero enviar mensajes a través de SSH, creo. Pienso en notificar-enviar como una aplicación de terminal que puedo ejecutar de manera interactiva en la PC host (no cliente). Creo que entiendo, notificar-enviar es un cliente per se en la máquina host a su manera, es lo que estás diciendo. ¿Eso significa de alguna manera que esto no es posible hacerlo en una sesión SSH? Eso sí, no estoy tratando de que esto aparezca en el cliente SSH, solo en el host / servidor SSH.
aikeru
@aikeru: notify-sendpuede enviar mensajes al daemon notificador de escucha. Cuando inicia sesión a través de SSH, este entorno no tiene la información necesaria para comunicarse con este notificador, es el problema subyacente.
slm
Entonces, ¿hay alguna forma de conectarse al entorno actual o algo así, de modo que tenga la información necesaria?
aikeru
@aikeru: gran parte de lo que he encontrado muestra que la configuración $DISPLAY=:0funcionaría, pero esto tampoco funciona para mí. Estoy en Fedora 20 usando Cinnamon como mi escritorio. El uso stracepara depurar esto muestra que hay una conexión que no se realiza al pasar por SSH, aún investigando qué está bloqueando esto.
slm
@aikeru - ver actualizaciones.
slm
0

OMI, puede ser que puedas usar:

ssh user@host 'export DISPLAY=:0 && notify-send "test message"'

Esto, por supuesto, suponiendo que ": 0" es el valor real de la variable DISPLAY, si es el único usuario actualmente conectado. Creo que tenemos que usar la palabra especial "exportar" aquí porque estamos enviando dos comandos y si exportamos la variable estará disponible para usar para el segundo comando "notificar-enviar". Los caracteres "&&" simplemente nos permiten lanzar los dos comandos en una línea.

Marco A. Rodriguez G.
fuente