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