Tere, kÔik!
Internetis on palju artikleid selle kohta, kuidas seadistada kaugĂŒhendus olemasolevale Xorg sessioonile x11vnc kaudu, kuid ma ei leidnud kusagilt, kuidas samal ajal kohaliku monitori ja sisendit vĂ€lja lĂŒlitada, et keegi, kes istub kaugarvuti lĂ€hedal, ei nĂ€eks seda, mida teete, ja ei saaks nuppudele vajutada. Allpool on minu viis, kuidas muuta x11vnc sarnasemaks Windowsi RDP-le.
Nii et eeldame, et te juba oskate x11vnc kasutada, kui ei, siis saate googeldada vÔi lugeda nÀiteks .
Antud: kĂ€ivitame x11nvc, ĂŒhendame sellega kliendi, kĂ”ik töötab, kuid arvuti kohaliku konsooli on samuti vĂ”imalik vaadata ja sisestada.
Tahame: peame vĂ€lja lĂŒlitama kohaliku konsooli (monitor + klaviatuur + hiir) nii, et mitte midagi ei saa nĂ€ha ja ei saa sisse kirjutada.
LĂŒlitame monitorid vĂ€lja
Esimene mĂ”te oli lihtsalt monitor xrandri kaudu vĂ€lja lĂŒlitada, nĂ€iteks nii:
$ xrandr --output CRT1 --off aga sel juhul hakkab akendesĂŒsteem (mul on KDE) arvama, et monitor on tĂ”eliselt vĂ€lja lĂŒlitatud ja hakkab aknaid ning paneele ringi viskama, kĂ”ik lĂ€heb paigast Ă€ra ja muutub kurvaks.
On huvitavam viis, mis seisneb monitori unereĆŸiimi saatmises, seda saab teha nĂ€iteks nii:
$ xset dpms force offaga siinki ei ole kĂ”ik sujuv. SĂŒsteem Ă€ratab monitori esimesel sĂŒndmusel. Aitab lihtne lahendus tsĂŒkli nĂ€ol:
while :
do
xset dpms force off
sleep .5
doneEdasi ei hakanud ma mÔtlema - lihtsalt ei viitsinud, see tÀidab oma eesmÀrki - monitorid ei nÀita midagi, isegi kui nuppudele vajutada, hiirega tuhnida jne.
UPD:
AitĂ€h veel ĂŒks viis, et vĂ€hendada heledust nulli:
$ xrandr --output CRT1 --brightness 0LĂŒlitame sisendi vĂ€lja
Sise sisendi vĂ€ljalĂŒlitamiseks kasutasin xinputi. KĂ€ivitamisel ilma parameetriteta toob see vĂ€lja seadmete loendi:
$ xinput
⥠Virtuaalne tuumikpointer id=2 [meister pointer (3)]
â âł Virtuaalne tuumik XTEST pointer id=4 [orjade pointer (2)]
â âł Logitech USB Laser hiir id=9 [orjade pointer (2)]
⣠Virtuaalne tuumikklaviatuur id=3 [meister klaviatuur (2)]
âł Virtuaalne tuumik XTEST klaviatuur id=5 [orjade klaviatuur (3)]
âł Toite nupp id=6 [orjade klaviatuur (3)]
âł Toite nupp id=7 [orjade klaviatuur (3)]
âł Unenupp id=8 [orjade klaviatuur (3)]
âł USB 2.0 Kaamera: HD 720P Webcam id=10 [orjade klaviatuur (3)]
âł HID 041e:30d3 id=11 [orjade klaviatuur (3)]
âł AT TĂ”lgitud komplekt 2 klaviatuur id=12 [orjade klaviatuur (3)]Seadmed Virtuaalne tuumik⊠vĂ€lja lĂŒlitamine ei Ă”nnestu â kuvab vea, kuid teisi saab sisse ja vĂ€lja lĂŒlitada, nĂ€iteks nii saab minutiks arvutita jÀÀda:
xinput disable 9; sleep 60; xinput enable 9Valmis lahendus
Oma juhtumi jaoks tegin skripti, mida kĂ€itan ssh sessioonis. See vaikib kohalikku sisendi ja tĂ”stab x11vnc serveri ĂŒles, ning skripti lĂ”petamisel taastab kĂ”ik nagu oli. LĂ”puks sain kolm skripti, siin need 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
doneTegelikult peamine skript (mul on kaks ekraani, tĂ”stan ĂŒhe ĂŒhise serveri ja iga ekraani kohta ĂŒhe).
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 x11vncTegelikult kĂ”ik. Logime sisse ssh, kĂ€ivitame vnc_server, kuni see elab, on meil vnc kaudu juurdepÀÀs ja kohalik konsool on vĂ€lja lĂŒlitatud.
AitÀh tÀhelepanu eest, tÀiustused ja parandused on teretulnud.
Allikas: habr.com
