Não é possível iniciar a apresentação na sessão do console do computador remoto a partir de uma sessão SSH

1

Basicamente eu estou executando este script remotamente através de uma sessão SSH. Ele funciona bem no Linux Mint, mas não no Debian (7.5). Parece que a exibição de exportação ou o comando nohup não está funcionando, mas não tenho certeza do que tentar testar. Alguém pode ver algo de errado com isso?

#!/usr/bin/env bash
mount -t cifs //10.50.18.114/Presentation -o 'username=Administrator,password=***,sec=ntlm' /mnt/share
pkill soffice.bin
cp -v /mnt/share/Pres.ppt /home/kyle/Documents
chmod 777 /home/kyle/Documents/Pres.ppt
export DISPLAY=":0"
nohup libreoffice --norestore --nolockcheck --show /home/kyle/Documents/Pres.ppt &
sessionid="$(pidof -s sshd)"
kill $sessionid
exit

EDIT: Este não é o mesmo problema, como mostrado no link 'duplicado' fornecido, eu usei as informações nesse segmento e não funcionou.

Para responder aos comentários: Eu tenho duas máquinas separadas. O PC de apresentação tem o script acima salvo localmente. Estou executando este script remotamente por SSH, eu coloco os comandos echo entre cada estágio e parece que ele é executado até o final (na verdade, comentei o killid sessionid), mas a apresentação não é exibida na apresentação PC. O script funciona se eu executar localmente como root (ele precisa do root para usar o comando mount).

O único erro que vejo é:

(soffice:3747): GConf-WARNING **: Client failed to connect to the D-BUS daemon: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. GConf Error: No D-BUS daemon running

No entanto, recebo este erro se eu executo localmente ou por SSH, então não acho que esse seja o problema. Eu ainda acredito que é algo com o comando EXPORT e nohup, mas eu não sei o suficiente para resolver problemas de forma eficaz.

EDIT 2: Ele realmente funciona quando eu SSH com minha conta 'kyle', parece se conectar via SSH com root não é capaz de se conectar ao display local do kyle porque é um nome de usuário diferente. Eu vou trabalhar em encontrar uma solução para isso.

    
por Kyle 28.05.2014 / 11:44

2 respostas

0

Se você quiser iniciar remotamente um programa em uma sessão gráfica, precisará definir mais do que a variável de ambiente DISPLAY . Você deve definir pelo menos XAUTHORITY e DBUS_SESSION_BUS_ADDRESS . Outras variáveis que podem ser configuradas são as XDG_ *, como XDG_RUNTIME_DIR , XDG_SEAT , etc.

Você pode descobrir seus valores executando algo como:

PID_OF_SOME_GUI_PROGRAM='pidof soffice.bin' # before you pkill it
strings /proc/${PID_OF_SOME_GUI_PROGRAM}/environ | grep XAUTHORITY

Se você estiver usando o XFCE, também poderá fazer:

PID_OF_SOME_GUI_PROGRAM='pidof xfce4-session'

(para o GNOME, provavelmente é gnome-session )

    
por 29.05.2014 / 19:02
0

Seguindo minha descoberta a partir das informações em 'EDIT 2', decidi apenas executar a parte de montagem do script separadamente com plink. plink fará 3 conexões SSH diferentes para a máquina: 1. Aceite automaticamente a impressão digital 2. Monte o compartilhamento como raiz 3. Execute o script principal para copiar e iniciar a apresentação como usuário padrão.

O script do lado do Windows é assim:

echo y | plink -ssh [email protected] "exit"
plink -ssh [email protected] -pw password /home/kyle/Desktop/mount.sh
plink -ssh [email protected] -pw kyle /home/kyle/Desktop/restart-pres.sh

Esta pode não ser a solução mais eficaz, mas funciona para a minha situação.

    
por 29.05.2014 / 17:41