Lemaza kiweko cha ndani unapotumia x11vnc

Salamu kila mtu,

Kuna vifungu vingi kwenye Mtandao juu ya mada ya jinsi ya kusanidi unganisho la mbali kwa kikao cha Xorg kilichopo kupitia x11vnc, lakini sijapata mahali popote jinsi ya kukandamiza kifuatiliaji cha ndani na pembejeo ili mtu yeyote anayeketi karibu na kompyuta ya mbali afanye. usione unachofanya na haibonyezi vitufe kwenye kipindi chako. Chini ya kata ni njia yangu ya kufanya x11vnc sawa na kuunganishwa na Windows kupitia RDP.

Kwa hivyo, wacha tuseme tayari unajua jinsi ya kutumia x11vnc, ikiwa sivyo, unaweza google au kusoma kwa mfano. hapa.

Imetolewa: tunazindua x11nvc, kuunganisha nayo na mteja, kila kitu kinafanya kazi, lakini console ya ndani ya kompyuta pia inapatikana kwa kutazama na kuingiza.

Tunataka: kuzima console ya ndani (kufuatilia + keyboard + panya) ili hakuna kitu kinachoweza kuonekana au kuingia.

Kuzima wachunguzi

Jambo la kwanza lililokuja akilini lilikuwa kuzima kifuatilia tu kupitia xrandr, kwa mfano kama hii:

$ xrandr --output CRT1 --off

lakini wakati huo huo, mazingira ya dirisha (nina KDE) huanza kufikiri kwamba kufuatilia ni kweli kuzimwa na kuanza kutupa madirisha na paneli, kila kitu kinatoka na kinakuwa huzuni.
Kuna njia ya kufurahisha zaidi, ambayo ni kutuma mfuatiliaji kwenye hibernation, unaweza kufanya hivi kwa mfano kama hii:

$ xset dpms force off

lakini hapa, pia, si kila kitu ni laini. Mfumo huamsha kufuatilia katika tukio la kwanza. Fimbo rahisi zaidi katika mfumo wa mzunguko husaidia:

while :
do
    xset dpms force off
    sleep .5
done

Sikufikiria zaidi - nilikuwa mvivu, inatumikia kusudi lake - wachunguzi hawaonyeshi chochote, hata nikibonyeza vifungo, kusonga panya, nk.

UPS:

Shukrani amarao kwa njia nyingine na kugeuza mwangaza kuwa sifuri:

$ xrandr --output CRT1 --brightness 0

Kukata pembejeo

Ili kuzima pembejeo nilitumia xinput. Inapozinduliwa bila vigezo, inaonyesha orodha ya vifaa:

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

Vifaa Msingi pepe... huwezi kuizima - hitilafu inaonyeshwa, lakini iliyobaki inaweza kuwashwa na kuzimwa, kwa mfano, hivi ndivyo unavyoweza kuachwa bila panya kwa dakika:

xinput disable 9; sleep 60; xinput enable 9

Suluhisho tayari

Kwa kesi yangu, nilitengeneza hati ambayo ninaendesha kwenye kikao cha ssh. Inakandamiza uingizaji wa ndani na kuinua seva ya x11vnc, na baada ya kukamilika kwa hati kila kitu kinarudi kama ilivyokuwa. Kama matokeo, tulipata maandishi matatu, haya hapa (yamesasishwa).

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

Zima_koni_ya_ndani:

#!/bin/sh

trap "switch_local_console 1" EXIT

while :
do
    switch_local_console 0
    sleep 1
done

Kweli, hati kuu (nina wachunguzi wawili, ninaweka seva moja ya kawaida na moja kwa kila mfuatiliaji).

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 x11vnc

Ni hayo tu. Ingia kupitia ssh na uzindue vnc_server, akiwa hai, tunaweza kufikia kupitia vnc na kiweko cha ndani kimezimwa.

Asante kwa umakini wako, nyongeza na maboresho yanakaribishwa.

Chanzo: mapenzi.com

Kuongeza maoni