Configuração DISPLAY =: 0 não tem efeito para notificar-enviar via ssh

0

Eu tenho acesso ssh ao computador do meu colega de quarto (Ubuntu 14.04). Eu quero mandar uma mensagem para ela via ssh, então eu uso esse comando

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

O comando sai com 0, mas ela não vê nenhuma mensagem. Por outro lado, quando eu uso export DISPLAY =: 0 e por exemplo xterm , o xterm normalmente é aberto. libnotify é instalado, quando eu executo notify-send localmente, ele mostra. Além disso, quando eu tento este comando via ssh em outro computador, funciona.

Alguma idéia, por que isso está acontecendo, por favor? Obrigado

    
por Michal Polovka 13.05.2016 / 12:14

2 respostas

2

O notify-send precisa ter credenciais de sessão para poder enviar notificações dentro de sua sessão de amigos. Estes são armazenados em variáveis de ambiente incluídas em uma sessão quando você faz o login, o que impede que processos de fundo não autorizados danifiquem sua área de trabalho.

Uma maneira fácil de disponibilizar essas credenciais de sessão (e subverter a segurança da área de trabalho completamente) é fazer com que a sessão da área de trabalho inicie uma sessão de tela e, em seguida, faça o plano de fundo.

você pode então ssh para ele, conectar-se à sessão de tela e então seu envio de notificação funcionará. Se você fizer isso, certifique-se de que seu colega de apartamento esteja totalmente ciente de que você tem acesso total à área de trabalho e aos arquivos.

Para configurar a sessão de tela:

No painel, execute "Aplicativos de inicialização"

clique em adicionar, dê um nome e digite o seguinte no comando:

screen -dmS desktop_session

Então, quando você se conectar via ssh

screen -r desktop_session
notify-send "Insecure message"

Você pode então executar qualquer comando e fazer com que sua saída gráfica apareça naquela sessão da área de trabalho.

Você precisará fazer isso de forma interativa, se você quiser fazer isso de forma não interativa, você pode ter um script de shell pesquisando um arquivo e quando ele tiver dados para enviá-lo para notificá-lo. ou apenas use um cliente de mensagens instantâneas.

    
por Amias 13.05.2016 / 12:38
1

Eu tive que fazer uma coisa semelhante - eu executava uma atualização em um computador, mas queria um envio de notificação em outro computador. Eu usei sshpass :

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

em que você substituiria user_password , user_name e ip_address de seu usuário / máquina específico.

    
por Bernmeister 22.12.2016 / 13:51