Deaktiveer plaaslike konsole wanneer x11vnc gebruik word

Hallo,

Daar is baie artikels op die internet oor die onderwerp van hoe om 'n afstandverbinding met 'n bestaande Xorg-sessie op te stel via x11vnc, maar ek het nΓͺrens gevind hoe om die plaaslike monitor en invoer te onderdruk sodat enigiemand wat langs die afgeleΓ« rekenaar sit nie sien nie wat jy doen nie en druk nie knoppies in jou sessie nie. Onder die snit is my metode om x11vnc meer soortgelyk te maak aan verbinding met Windows via RDP.

So, kom ons sΓͺ jy weet reeds hoe om x11vnc te gebruik, indien nie, kan jy google of lees byvoorbeeld hier.

Gegee: ons begin x11nvc, koppel daaraan met die kliΓ«nt, alles werk, maar die plaaslike konsole van die rekenaar is ook beskikbaar vir besigtiging en invoer.

Ons wil hΓͺ: skakel die plaaslike konsole (monitor + sleutelbord + muis) af sodat niks gesien of ingevoer kan word nie.

Skakel die monitors af

Die eerste ding wat by my opgekom het, was om bloot die monitor via xrandr af te skakel, byvoorbeeld so:

$ xrandr --output CRT1 --off

maar terselfdertyd begin die vensteromgewing (ek het KDE) dink dat die monitor regtig afgeskakel is en begin vensters en panele gooi, alles beweeg uit en word hartseer.
Daar is 'n meer interessante manier, dit is om die monitor in hibernasie te stuur, jy kan dit byvoorbeeld so doen:

$ xset dpms force off

maar ook hier is alles nie glad nie. Die stelsel maak die monitor wakker by die eerste gebeurtenis. Die eenvoudigste kruk in die vorm van 'n siklus help:

while :
do
    xset dpms force off
    sleep .5
done

Ek het nie verder gedink nie - ek was lui, dit dien sy doel - die monitors wys niks, al druk ek die knoppies, beweeg die muis, ens.

UPS:

Dankie amarao vir 'n ander metode om die helderheid na nul te draai:

$ xrandr --output CRT1 --brightness 0

Knip die insette uit

Om invoer uit te skakel, het ek xinput gebruik. Wanneer dit sonder parameters van stapel gestuur word, vertoon dit 'n lys toestelle:

$ 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)]

Toestelle Virtuele kern... jy kan dit nie deaktiveer nie - 'n fout word vertoon, maar die res kan aan- en afgeskakel word, byvoorbeeld, so kan jy vir 'n minuut sonder 'n muis gelaat word:

xinput disable 9; sleep 60; xinput enable 9

Vinnige oplossing

Vir my geval het ek 'n draaiboek gemaak wat ek in 'n ssh-sessie uitvoer. Dit onderdruk plaaslike invoer en verhoog die x11vnc-bediener, en na voltooiing van die skrif keer alles terug soos dit was. As gevolg hiervan het ons drie skrifte gekry, hier is hulle (opgedateer).

skakel_plaaslike_konsole:

#!/bin/sh

case $1 in
    1|on)
    desired=1
    ;;
    0|off)
    desired=0
    ;;
    *)
    echo "USAGE: $0 0|1|on|off"
    exit 1
    ;;
esac

keyboards=`xinput | grep -v "XTEST" | grep "slave  keyboard" | sed -re 's/^.*sid=([0-9]+)s.*$/1/'`
mouses=`xinput | grep -v "XTEST" | grep "slave  pointer" | sed -re 's/^.*sid=([0-9]+)s.*$/1/'`
monitors=`xrandr | grep " connected" | sed -re 's/^(.+) connected.*$/1/'`

for device in $mouses
do
    xinput --set-prop $device "Device Enabled" $desired
done

for device in $keyboards
do
    xinput --set-prop $device "Device Enabled" $desired
done

for device in $monitors
do
    xrandr --output $device --brightness $desired
done

deaktiveer_plaaslike_konsole:

#!/bin/sh

trap "switch_local_console 1" EXIT

while :
do
    switch_local_console 0
    sleep 1
done

Eintlik die hoofskrif (ek het twee monitors, ek het een gemeenskaplike bediener en een vir elke monitor opgestel).

vnc_bediener:

#!/bin/bash

[[ ":0" == "$DISPLAY" ]] && echo "Should be run under ssh session" && exit 1

export DISPLAY=:0

killall x11vnc

rm -r /tmp/x11vnc
mkdir -p /tmp/x11vnc/{5900,5901,5902}

params="-fixscreen V=5 -forever -usepw -noxkb -noxdamage -repeat -nevershared"

echo "Starting VNC servers"

x11vnc -rfbport 5900 $params 2>&1 | tinylog -k 2 -r /tmp/x11vnc/5900 &
x11vnc -rfbport 5901 $params -clip 1920x1080+0+0 2>&1 | tinylog -k 2 -r /tmp/x11vnc/5901 &
x11vnc -rfbport 5902 $params -clip 1920x1080+1920+0 2>&1 | tinylog -k 2 -r /tmp/x11vnc/5902 &

echo "Waiting VNC servers"
while [ `ps afx | grep -c "x11vnc -rfbport"` -ne "4" ]
do
    sleep .5
done

echo "Disabling local console"
disable_local_console

echo "Killing VNC servers"
killall x11vnc

Dis al. Teken in via ssh en begin vnc_bediener, terwyl hy lewe, het ons toegang via vnc en die plaaslike konsole is geblus.

Dankie vir u aandag, toevoegings en verbeterings is welkom.

Bron: will.com

Voeg 'n opmerking