Como executar um aplicativo GUI do shell ssh?

7

Eu posso acessar minha caixa de linux por ssh e por vnc. Eu quero executar um aplicativo GUI, mas diretamente do ssh, eu não quero acessar através do VNC e clique em volta. Então, depois de fazer o login usando ssh, eu quero emitir um comando magic, para que quando eu fizer login através do VNC, eu veja meu aplicativo GUI rodando. Como posso fazer isso?

editar:

A caixa linux tem o servidor X em execução. Eu preciso automatizar a reinicialização de um aplicativo GUI. Eu quero fazer isso sem qualquer tipo de interação com GUI. O que eu preciso:

  1. faça login por meio do ssh no SERVER
  2. execute meu aplicativo GUI forçando-o a se ligar ao servidor X em execução no SERVER
  3. ???
  4. LUCRO!
por karramba 17.06.2010 / 21:39

6 respostas

5

Eu li a versão editada da questão, e se eu entendi corretamente, você quer rodar um programa do SSH sem mostrar a GUI ... você só quer rodar o programa e isso depende do X Windows , então você precisa se conectar de alguma forma ao X Windows no próprio servidor.

Existem duas coisas que você precisa fazer. Você precisa permitir conexões de fora do X Windows, e então você precisa dizer ao shell (no SSH) qual servidor X se ligar.

Primeiro, permita conexões de entrada para o servidor X. Abra uma janela de terminal no X Windows na máquina do servidor. (Você deve ter acesso a isso, caso contrário você não pode fazer isso.)

Emita o seguinte comando:

xhost +

Ele deve informar "conexões permitidas de todos os hosts" ou algo assim.

Então, enquanto ainda permanece no X Windows, problema:

echo $DISPLAY

Isso lhe dirá o ID de exibição. Anote ou lembre-se. Normalmente, será ": 0" ou ": 0.0", mas não se preocupe se for diferente.

Isso é tudo o que você precisa fazer no próprio X Windows.

Agora o SSH no servidor de onde você quiser. Emita o comando:

export DISPLAY=[what-the-echo-command-gave-you]

E deveria ser isso! Agora você deve ser capaz de rodar qualquer X Window daquele shell SSH, e ele irá aparecer no servidor X Windows local.

Espero que ajude!

    
por 17.06.2010 / 22:51
5

Você precisa encaminhar o X11 para sua máquina local (a partir da máquina remota). Passe os sinalizadores -X ou -Y ao chamar ssh.

    
por 17.06.2010 / 22:05
4

Em que exibição a exibição do aplicativo é ditada pela variável de ambiente DISPLAY . do export DISPLAY=:0.0 para fazê-lo aparecer na primeira tela da máquina remota.

    
por 17.06.2010 / 22:35
0

Primeiro, esta não é uma questão de programação (s / b serverfault.com)

No entanto, você precisa rodar um servidor X no seu sistema (algo como o XMing, por exemplo), depois rodar o programa GUI na caixa linux, isso colocará a GUI em sua máquina.

    
por 17.06.2010 / 21:51
0

FYI, você pode fazer algo parecido com isso na realidade do Windows, como iniciar um processo UNIX, usando WinSSHD e / ou Tunnelier .

Se o que você está querendo dizer é lançar o GUI em uma sessão local do X Window, então você precisa definir a variável DISPLAY para local (Tunnelier pode ter uma configuração para isso) e porque no Windows você precisa combinar isso com executar um x -window emulator no windows (como cygwin-X )

    
por 17.06.2010 / 22:37
0

Acho mais fácil fazer isso usando um multiplexador de terminal como screen ou tmux . Não é preciso mexer com xhost . copiando e colando autorizações, ou qualquer coisa assim.

A ideia básica:

  1. Na máquina remota, abra um terminal virtual X; nesse terminal virtual, inicie uma sessão screen ou tmux . (Isso significa clicar no VNC, mas esta é a única vez que você tem que fazer isso.)
  2. Agora, sempre que você fizer SSH na máquina remota, poderá anexar a esta sessão screen ou tmux .
  3. Uma vez conectado, você pode executar qualquer aplicativo GUI e ele deve aparecer na máquina remota como se você tivesse executado a partir daí.

Exemplo de tela do GNU:

No terminal virtual da máquina remota (aberto via VNC ou fisicamente):

you@remote:~$ screen -S myscreen

Então, quando você entrar em SSH, você pode simplesmente anexar a essa sessão:

you@remote:~$ screen -x myscreen

E, a partir da sessão de tela, execute os aplicativos que você quiser:

you@remote:~$ myapp &
    
por 16.08.2012 / 21:20

Tags