Encaminhamento X11: Como compartilhar a área de trabalho em vários clientes simultaneamente?

Encaminhamento X11: Como compartilhar a área de trabalho em vários clientes simultaneamente?

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

Responder1

Você poderia usar o VNC, veja estas perguntas e respostas:https://softwarerecs.stackexchange.com/questions/20417/same-content-on-several- Different-computers-monitors-administered-remotely/20419#20419.

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 no modo "leitura-gravação" (os clientes podem assumir o controle do servidor via teclado ou mouse, mas pode ser complicado quando vários clientes têm controle de gravação simultaneamente, pois podem interferir uns nos outros).

As distribuições Linux mais recentes têm suporte VNC integrado ao próprio servidor X11, mas pode precisar ser habilitado (verifique a documentação específica da distribuição 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 interno do servidor X11 faz isso).

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

Responder2

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

No lado do cliente, configurei um script expect para iniciar uma Xsession em branco (por exemplo X :1), mudar para esse terminal virtual (ou seja, chvt 1quando necessário) e conectar-me ao vncserver.

Nomeadamente:

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

onde 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 disponibiliza conteúdo em :1 depois:

vncserver :1 -geometry 1024x768 -depth 16

Depois disso, ficou um pouco complicado fechar as Xsessions nos clientes. Então usei o seguinte script expect 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

informação relacionada