Reencaminhamento X11: Como partilhar o ambiente de trabalho em muitos clientes em simultâneo?

2

Como posso compartilhar a exibição da área de trabalho (ou exibição de um programa) em várias outras máquinas (com acesso raiz) simultaneamente? Já vi perguntas semelhantes (por exemplo, aqui e aqui ), mas não tenho certeza de como um para muitos seria feito simultaneamente.

    
por Donnied 14.09.2015 / 13:50

2 respostas

1

Você pode usar o VNC, veja este Q & A: link .

Um servidor VNC pode ser compartilhado por vários clientes no modo "somente leitura" (ou seja, os clientes não podem controlar o servidor via teclado ou mouse) ou modo "leitura-gravação" (clientes podem controlar o servidor via teclado ou mouse, mas pode ser complicado quando vários clientes têm controle de gravação simultaneamente, pois podem interferir uns com os outros).

As distribuições Linux mais recentes têm o suporte VNC embutido no próprio servidor X11, mas pode ser necessário ativá-lo (consulte a documentação de distribuição específica para obter instruções). Alternativamente, você pode iniciar um servidor manualmente, totalmente independente do servidor X11 "principal" em execução na máquina. Quando iniciado manualmente, um servidor VNC pode suportar simultaneamente clientes "somente leitura" e "leitura-gravação" usando senhas diferentes (não tenho certeza se o suporte ao servidor X11 integrado faz isso).

O VNC funciona maravilhosamente sobre SSH e os clientes nem precisam de permissões de root para execução.

    
por 14.09.2015 / 18:25
0

O objetivo era distribuir qualquer imagem / programa selecionado para ~ 30 desktops Linux, independentemente de um usuário estar logado ou não, o conteúdo deveria substituir o que o usuário estava visualizando (pense em PSA) e as tarefas reais dos usuários deveriam permanecer não perturbado. Além disso, o usuário não deve ter a capacidade de alterar o conteúdo. Eu esperava por uma solução básica usando transmissões X e TCP. Isso não evoluiu, mas usei o VNC como recomendado por outros.

No lado do cliente, configurei um script de espera para iniciar uma Xsession em branco (por exemplo, X :1 ), alternar para esse terminal virtual (por exemplo, chvt 1 quando necessário) e conectar ao vncserver.

Ou seja:

for num in $(seq 0 30); do expect -f xremote$num.exp; done

em que cada script xremote especifica o host remoto:

set timeout -1
spawn ssh -o ConnectTimeout=10 root@somehost1
match_max 100000
expect "#"
send "X :1 & \r"
expect "#"
send "export DISPLAY=:1 \r"
expect "#"
send "vncviewer -passwd /root/.vnc/passwd -Shared -ViewOnly -FullScreen 192.168.1.1:1& \r"
expect "#"
send "exit\r"
expect eof
exit 0

e o servidor exibe conteúdo em: 1 depois:

vncserver :1 -geometry 1024x768 -depth 16

Depois disso, ficou um pouco complicado fechar os Xsessions nos clientes. Então usei o seguinte script de espera para fechar todas as Xsessions [X reinicia automaticamente em: 0]:

set timeout -1
spawn ssh -o ConnectTimeout=10 root@somehost1
match_max 100000
expect "#"
send "pkill X   \r"
expect "#"
send "chvt 1 \r"
expect "#"
send "rm /tmp/.X*lock \r"
send "exit\r"
expect eof
exit 0
    
por 19.09.2015 / 02:51