Tere kõigile,
internetis on palju artikleid teemal, kuidas seadistada kaugühendust olemasoleva Xorg sessiooniga x11vnc kaudu, kuid ma ei leidnud kuskilt, kuidas seejuures kohalik monitor ja sisend välja lülitada, et keegi, kes istub eemaloleva arvuti kõrval, ei näeks seda, mida teete, ega vajutaks teie sessioonis nuppusid. Allpool on minu meetod, kuidas teha x11vnc rohkem sarnaseks Windowsi RDP ühendusele.
Nii et oletame, et oskate juba kasutada x11vnc-d, kui ei, siis võib otsida või lugeda näiteks .
Antud: käivitame x11nvc, ühendume sellega kliendiga, kõik töötab, kuid kohalikke konsooli arvuti jaoks on samuti võimalik vaadata ja sisestada.
Soovitakse: välja lülitada kohaliku konsooli (monitor + klaviatuur + hiir) nii, et ei oleks võimalik midagi näha ega sisestada.
Lülitame monitorid välja
Esmalt, mis pähe tuli, oli lihtsalt monitori välja lülitamine näiteks xrandr kaudu nii:
$ xrandr --output CRT1 --off kuid sellega arvuti graafiline keskkond (mul on KDE) hakkab arvama, et monitor on tõeliselt välja lülitatud ja hakkab aknaid ning paneele ümber tõstma, kõik läheb paigast ära ja muutub kurvaks.
On olemas huvitavam meetod, milleks on monitori magamapanek; seda saab teha näiteks nii:
$ xset dpms force offaga siin pole ka kõik sujuv. Süsteem äratab monitori esimese sündmuse korral. Lihtne trikk, nagu tsükkel, aitab:
while :
do
xset dpms force off
sleep .5
doneEdasi ei mõelnud ma — mul oli laisk, see täidab oma eesmärki — monitorid ei näita midagi, isegi kui nuppe vajutada, hiirt raputada jne.
UPD:
Aitäh teise meetodi kohta, milleks on heleduse nullimiseks keeramine:
$ xrandr --output CRT1 --brightness 0Lülitame sisendi välja
Sissevõtu keelamiseks kasutasin xinputi. Käivitamisel ilma parameetriteta kuvab see seadmete loendi:
$ xinput
⎡ Virtuaalne põhitugevus id=2 [meistripointer (3)]
⎜ ↳ Virtuaalne põhjalik XTEST pointer id=4 [orjendipointer (2)]
⎜ ↳ Logitech USB Laser Mouse id=9 [orjendi pointer (2)]
⎣ Virtuaalne põhiklahvistik id=3 [meistriklahvistik (2)]
↳ Virtuaalne põhjalik XTEST klaviatuur id=5 [orjendiklahvistik (3)]
↳ Toite nupp id=6 [orjendiklahvistik (3)]
↳ Toite nupp id=7 [orjendiklahvistik (3)]
↳ Une nupp id=8 [orjendiklahvistik (3)]
↳ USB 2.0 Kaamera: HD 720P Webcam id=10 [orjendiklahvistik (3)]
↳ HID 041e:30d3 id=11 [orjendiklahvistik (3)]
↳ AT tõlgitud komplekt 2 klaviatuur id=12 [orjendiklahvistik (3)]Seadmed Virtuaalne südamik… ei saa välja lülitada — kuvatakse viga, kuid teised saab sisse ja välja lülitada, näiteks nii saab jääda minutiks ilma hiireta:
xinput disable 9; sleep 60; xinput enable 9Valmis lahendus
Oma juhtumi jaoks tegin skripti, mida käitan ssh sessioonis. See vaigistab kohaliku sisendi ja tõstab x11vnc serveri üles, pärast skripti lõppu naaseb kõik algsesse seisundisse. Tulemuseks on kolm skripti, siin nad on (uuendatud).
switch_local_console:
#!/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
disable_local_console:
#!/bin/sh
trap "switch_local_console 1" EXIT
while :
do
switch_local_console 0
sleep 1
donePeamine skript (mul on kaks monitori, tõstan ühe ühise serveri ja ühe igale monitorile).
vnc_server:
#!/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 x11vncKäime ssh kaudu, käivitame vnc_server, seni kuni see töötab, on meil vnc kaudu juurdepääs ja kohaliku konsooli välja lülitamine.
Aitäh tähelepanu eest, täiendused ja parandused on teretulnud.
Allikas: habr.com
