Oi pessoal
Na Internet, existem muitos artigos sobre como configurar uma conexão remota a uma sessão existente do Xorg via x11vnc, mas não encontrei em nenhum lugar como fixar o monitor e a entrada local para que qualquer pessoa que esteja ao lado do computador remoto não veja o que está fazendo e não botões pressionados em sua sessão. Sob cat, minha maneira de tornar o x11vnc mais parecido com a conexão ao Windows via RDP.
Então, digamos que você já saiba como usar o x11vnc, caso contrário, você pode pesquisar no Google ou ler, por exemplo,
aqui .
Dado: inicie o x11nvc, conecte-se ao cliente, tudo funciona, mas o console do computador local também está disponível para visualização e entrada.
Queremos: reduzir o console local (monitor + teclado + mouse) para que nada possa ser visto e inserido.
Reduzimos monitores
A primeira coisa que veio à mente foi apenas cortar o monitor via xrandr, por exemplo:
$ xrandr --output CRT1 --off
mas, ao mesmo tempo, o ambiente da janela (eu tenho o KDE) começa a pensar que o monitor está realmente desligado e começa a atirar janelas e painéis, tudo sai e fica triste.
Existe uma maneira mais interessante, que é enviar o monitor para dormir, você pode fazer isso, por exemplo, assim:
$ xset dpms force off
mas aqui também, nem tudo está indo bem. O sistema ativa o monitor no primeiro evento. A muleta mais simples na forma de um ciclo ajuda a:
while : do xset dpms force off sleep .5 done
Não pensei mais - era preguiça, cumpre seu objetivo - os monitores não mostram nada, mesmo se você pressionar botões, abanar o mouse etc.
UPD:
Obrigado
amarao por outra maneira de
mudar para zero brilho:
$ xrandr --output CRT1 --brightness 0
Corte a entrada
Para desativar a entrada, usei o xinput. Quando iniciado sem parâmetros, ele exibe uma lista de dispositivos:
$ xinput ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] ⎜ ↳ Logitech USB Laser Mouse id=9 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] ↳ Power Button id=6 [slave keyboard (3)] ↳ Power Button id=7 [slave keyboard (3)] ↳ Sleep Button id=8 [slave keyboard (3)] ↳ USB 2.0 Camera: HD 720P Webcam id=10 [slave keyboard (3)] ↳ HID 041e:30d3 id=11 [slave keyboard (3)] ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
Dispositivos
virtuais virtuais ... não podem ser desativados - um erro é emitido, mas o restante pode ser ativado e desativado. Por exemplo, assim, você pode ficar sem um mouse por um minuto:
xinput disable 9; sleep 60; xinput enable 9
Solução chave na mão
Para o meu caso, criei um script que é executado na sessão ssh. Ele suprime a entrada local e gera o servidor x11vnc, e, após a conclusão do script, tudo retorna como estava. Como resultado, três scripts foram lançados, aqui estão eles (atualizados).
switch_local_console:
disable_local_console:
Na verdade, o script principal (eu tenho dois monitores, eu levanto um servidor comum e um para cada monitor).
vnc_server:
Na verdade tudo. Utilizamos o ssh,
rodamos o vnc_server enquanto ele está ativo, temos acesso via vnc e o console local extinto.
Obrigado por sua atenção, adições e melhorias são bem-vindas.