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
