notification-send non funziona con ssh


10

Forse questo ha avuto risposta da qualche altra parte, ma non l'ho visto.

Sto eseguendo Ubuntu 14.04. Quando inserisco SSH nella mia macchina, ad esempio:

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

Non vedo nulla sul monitor in cui sono connesso alla macchina. Se mi prefisso notify-sendcon DISPLAY=:0.0o DISPLAY=:0nulla di diverso accade. Non vedo mai alcuna notifica sulla sessione corrente.

C'è qualche trucco / interruttore per farlo funzionare?

Nel caso in cui ciò non sia chiaro, consentitemi di ripetere: dal computer A, I SSH al computer B. All'interno della sessione SSH, desidero eseguire notifica-invio per l'esecuzione sul computer B. Mi aspetto che appaia una notifica di tipo ringhio sul monitor del computer B.


Per altre persone che lo trovano come il miglior risultato su Google, ha DISPLAY=:0 notify-send 'hello'funzionato per me (non per l'aikeru), provalo prima di passaggi più complicati.
Segna il

Risposte:


9

Penso che stai confondendo le varie tecnologie e come funzionano. Non mi aspetto che il demone di notifica di un sistema possa inviare messaggi tramite SSH. L'impostazione $DISPLAYè come X11 invia l'output da un'applicazione a un'altra per scopi di visualizzazione, ma notify-sendsta inviando un messaggio reale al daemon di notifica. Questo messaggio viene inviato utilizzando la libnotifylibreria.

estratto

libnotify è una libreria che invia notifiche desktop a un demone di notifica, come definito nelle specifiche Notifiche desktop. Queste notifiche possono essere utilizzate per informare l'utente su un evento o visualizzare alcune forme di informazioni senza intralciare l'utente.

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

Approccio per app

Un metodo per unire i notify-sendmessaggi al notificatore del sistema locale è quello di utilizzare un approccio come indicato da questo post del blog intitolato: Notifiche IRC tramite SSH e libnotify . Questo approccio dovrebbe essere personalizzato per ogni tipo di notifica che si desidera ricondurre al proprio notificatore locale.

Tunnelling libnotify su SSH

Per una soluzione più generale libnotify-over-sshpotrebbe essere più quello che stai cercando.

estratto

Questo è uno script perl del server client che ho scritto in modo che il mio server potesse essenzialmente inviare messaggi libnotify al mio computer locale. Lo uso principalmente con weechat ma ha una funzione per renderlo più generale. Quando si chiama il client con il tag weechat, il server controlla il nome della finestra focalizzata corrente. Se inizia con weechat, le notifiche vengono eliminate se non viene chiamata la notifica-invio.

Visualizzazione sul server remoto

Se invece stai semplicemente provando a utilizzare notify-sendper visualizzare i messaggi su un server remoto a cui ti sei sshconnesso, probabilmente dovrai seguire uno dei suggerimenti fatti in questo Q&A intitolato: Uso di notifica-invio con cron . Anche se molte delle risposte hanno suggerito che ciò non era necessario, ho dovuto fare quanto segue, come altri hanno menzionato nei commenti sul mio sistema Fedora 20 usando Cinnamon come desktop per far funzionare le cose.

Per notify-sendfunzionare ho dovuto impostare questa variabile con il valore appropriato dall'ambiente desktop del sistema remoto.

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

Sul mio sistema sono stato in grado di utilizzare un file gestito per questo preciso scopo.

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

NOTA: il nome del file DBUS cambierà da sessione a sessione.


Hmmm .. Ho aggiunto alcuni chiarimenti. Non voglio inviare messaggi tramite SSH, credo. Penso a notifica-invio come un'app terminale che posso eseguire in modo interattivo sul PC host (non client). Penso di aver capito - a suo modo, notifica-invio è un client sulla macchina host - è quello che stai dicendo. Questo in qualche modo significa che non è possibile farlo durante una sessione SSH? Intendiamoci, non sto cercando di farlo apparire sul client SSH, ma solo sull'host / server SSH.
aikeru,

@aikeru: notify-sendpuò inviare messaggi al daemon di notifica dell'ascolto. Quando si accede tramite SSH questo ambiente non ha le informazioni necessarie per comunicare con questo notificatore, è il problema di fondo.
slm

Quindi c'è un modo per collegarsi all'ambiente attuale o qualcosa del genere, in modo tale che abbia le informazioni necessarie?
aikeru,

@aikeru - gran parte di ciò che ho trovato mostra che l'impostazione $DISPLAY=:0funzionerebbe, ma questo non funziona anche per me. Sono su Fedora 20 usando Cinnamon come desktop. Usando il stracedebug questo mostra che esiste una connessione che non viene eseguita quando si passa attraverso SSH, indagando ancora su cosa lo sta bloccando.
slm

@aikeru - vedi aggiornamenti.
slm

0

IMO, potresti essere tu che potresti usare:

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

Questo ovviamente supponendo che ": 0" sia il valore reale della variabile DISPLAY, se è l'unico utente attualmente connesso. Penso che qui dobbiamo usare la parola speciale "export" perché stiamo inviando due comandi e se esportiamo la variabile sarà disponibile per l'uso per il secondo comando "notifica-invia". I caratteri "&&" ci permettono semplicemente di lanciare i due comandi in una riga.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.