notificar-enviar não está funcionando no ssh


10

Talvez isso seja respondido em outro lugar, mas eu não vi.

Estou executando o Ubuntu 14.04. Quando eu SSH na minha máquina, por exemplo:

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

Não vejo nada no monitor em que estou conectado à máquina. Se prefixo notify-sendcom DISPLAY=:0.0ou DISPLAY=:0nada de diferente acontece. Eu nunca vejo nenhuma notificação na sessão atual.

Existe algum truque / mudança para fazer isso funcionar?

Caso isso não esteja claro, permita-me reiterar: Do Computador A, SSH para o Computador B. Na sessão SSH, desejo executar o envio de notificação para execução no Computador B. Espero que apareça uma notificação do tipo rosnado no monitor do computador B.


Para outras pessoas que consideram isso o melhor resultado pelo Google, DISPLAY=:0 notify-send 'hello'trabalharam para mim (não para o aikeru), tente isso antes de etapas mais complicadas.
Mark

Respostas:


9

Acho que você está confundindo as várias tecnologias e como elas funcionam. Eu não esperaria que o daemon de notificação de um sistema pudesse enviar mensagens via SSH. Definir $DISPLAYcomo é que o X11 envia a saída de um aplicativo para outro para fins de exibição, mas notify-sendestá enviando uma mensagem real para o daemon de notificação. Esta mensagem é enviada usando a libnotifybiblioteca.

excerto

libnotify é uma biblioteca que envia notificações da área de trabalho a um daemon de notificação, conforme definido na especificação de notificações da área de trabalho. Essas notificações podem ser usadas para informar o usuário sobre um evento ou exibir alguma forma de informação sem atrapalhar o usuário.

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

Abordagem por aplicativo

Um método para associar as notify-sendmensagens ao notificador do sistema local é usar uma abordagem descrita nesta postagem do blog intitulada: Notificações de IRC via SSH e libnotify . Essa abordagem precisaria ser personalizada para cada tipo de notificação que você deseja direcionar de volta ao seu notificador local.

Tunelamento libnotify sobre SSH

Para uma solução mais geral, libnotify-over-sshpode ser mais o que você está procurando.

excerto

Este é um script perl do servidor cliente que escrevi para que meu servidor possa essencialmente enviar mensagens libnotify para minha máquina local. Eu uso isso principalmente com weechat, mas tem um recurso para torná-lo mais geral. Ao chamar o cliente com a tag weechat, o servidor verifica o nome da janela focada atual. Se começar com o weechat, as notificações serão suprimidas se não for chamado o envio de notificação.

Exibindo no servidor remoto

Se, por outro lado, você está simplesmente tentando usar notify-sendpara exibir mensagens em um servidor remoto ao qual costumava sshse conectar, provavelmente precisará seguir uma das sugestões feitas nesta seção de perguntas e respostas intitulada: Usando a notificação de envio com cron . Mesmo que várias das respostas sugerissem que isso era desnecessário, eu tive que fazer o seguinte, como outros mencionados nos comentários no meu sistema Fedora 20, usando o Cinnamon como minha área de trabalho para fazer as coisas funcionarem.

Para começar notify-send, tive que definir essa variável com o valor apropriado do ambiente de área de trabalho do sistema remoto.

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

No meu sistema, pude usar um arquivo que é mantido exatamente para esse propósito.

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

NOTA: O nome do arquivo DBUS mudará de sessão para sessão.


Hummm .. eu adicionei alguns esclarecimentos. Não quero enviar mensagens pelo SSH, acho. Penso em notificar-enviar como um aplicativo de terminal que eu possa executar interativamente no PC host (não no cliente). Acho que entendi - notificar-enviar é um cliente em si na máquina host à sua maneira - é o que você está dizendo. De alguma forma, isso significa que isso não é possível durante uma sessão SSH? Lembre-se, não estou tentando fazer com que isso apareça no cliente SSH, apenas no host / servidor SSH.
aikeru

@aikeru - notify-sendpode enviar mensagens para o daemon do notificador de escuta. Quando você faz login via SSH, esse ambiente não possui as informações necessárias para se comunicar com esse notificador, é o problema subjacente.
Slm

Então, existe alguma maneira de se conectar ao ambiente atual ou algo assim, de modo que ele tenha as informações necessárias?
28614 Aikeru

@aikeru - muito do que encontrei mostra que a configuração $DISPLAY=:0funcionaria, mas isso também não funciona para mim. Estou no Fedora 20 usando o Canela como minha área de trabalho. Usar stracepara depurar isso mostra que há uma conexão que não é feita durante o SSH, ainda investigando o que está bloqueando isso.
Slm

@aikeru - veja as atualizações.
Slm

0

IMO, pode ser que você possa usar:

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

Obviamente, assumindo que ": 0" é o valor real da variável DISPLAY, se for o único usuário conectado no momento. Acho que precisamos usar a palavra especial "export" aqui porque estamos enviando dois comandos e se exportamos a variável que estará disponível para uso no segundo comando "notify-send". Os caracteres "&&" simplesmente permitem iniciar os dois comandos em uma linha.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.