Pag-disable sa lokal nga console kung gamiton ang x11vnc

kumusta sa tanan,

Adunay daghang mga artikulo sa Internet bahin sa hilisgutan kung giunsa ang pag-set up sa usa ka hilit nga koneksyon sa usa ka naa na nga sesyon sa Xorg pinaagi sa x11vnc, apan wala ako nakit-an bisan diin kung giunsa pagsumpo ang lokal nga monitor ug input aron ang bisan kinsa nga naglingkod tapad sa hilit nga kompyuter makahimo. dili makita kung unsa ang imong gibuhat ug wala gipugos ang mga buton sa imong sesyon. Ubos sa pagputol mao ang akong pamaagi sa paghimo sa x11vnc nga mas susama sa pagkonektar sa Windows pinaagi sa RDP.

Busa, ingnon ta nga nahibal-an na nimo kung giunsa ang paggamit sa x11vnc, kung dili, mahimo nimo i-google o basahon pananglitan. dinhi.

Gihatag: gilansad namon ang x11nvc, ikonektar kini sa kliyente, ang tanan molihok, apan ang lokal nga console sa kompyuter magamit usab alang sa pagtan-aw ug pag-input.

Gusto namo: palonga ang lokal nga console (monitor + keyboard + mouse) aron walay makita o masulod.

Gipalong ang mga monitor

Ang una nga nahunahunaan mao ang pagpalong sa monitor pinaagi sa xrandr, pananglitan sama niini:

$ xrandr --output CRT1 --off

apan sa samang higayon, ang windowing environment (ako adunay KDE) nagsugod sa paghunahuna nga ang monitor gipalong gayud ug nagsugod sa paglabay sa mga bintana ug mga panel, ang tanan milihok ug nahimong masulub-on.
Adunay usa ka mas makapaikag nga paagi, nga mao ang pagpadala sa monitor sa hibernation, mahimo nimo kini pananglitan sama niini:

$ xset dpms force off

apan dinhi usab, dili tanan hapsay. Gipukaw sa sistema ang monitor sa unang panghitabo. Ang pinakasimple nga saklay sa porma sa usa ka siklo makatabang:

while :
do
    xset dpms force off
    sleep .5
done

Wala na ako maghunahuna pa - tapolan ko, nagsilbi kini nga katuyoan - ang mga monitor wala magpakita bisan unsa, bisan kung gipugos nako ang mga buton, gipalihok ang mouse, ug uban pa.

UPS:

Бпасибо amarao alang sa laing pamaagi sa pagpabalik sa kahayag ngadto sa zero:

$ xrandr --output CRT1 --brightness 0

Pagputol sa input

Aron ma-disable ang input gigamit nako ang xinput. Kung gilansad nga wala’y mga parameter, nagpakita kini usa ka lista sa mga aparato:

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

Mga gamit Virtual core... dili nimo kini ma-disable - usa ka sayup ang gipakita, apan ang nahabilin mahimo’g i-on ug i-off, pananglitan, kini kung giunsa ka mabiyaan nga wala’y mouse sa usa ka minuto:

xinput disable 9; sleep 60; xinput enable 9

Andam nga solusyon

Alang sa akong kaso, naghimo ako usa ka script nga akong gipadagan sa usa ka sesyon sa ssh. Gipugngan niini ang lokal nga input ug gipataas ang x11vnc server, ug pagkahuman sa script ang tanan mobalik sama sa kaniadto. Ingon usa ka sangputanan, nakakuha kami tulo nga mga script, ania sila (gi-update).

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
done

Sa tinuud, ang nag-unang script (ako adunay duha ka monitor, nagbutang ako usa ka sagad nga server ug usa alang sa matag monitor).

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

Mao ra. Pag-login pinaagi sa ssh ug paglansad vnc_server, samtang buhi pa siya, kami adunay access pinaagi sa vnc ug ang lokal nga console gipalong.

Salamat sa imong pagtagad, gidawat ang mga pagdugang ug pag-uswag.

Source: www.habr.com

Idugang sa usa ka comment