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
