Ҳангоми истифодаи x11vnc консоли маҳаллиро хомӯш кунед

Салом хама,

Дар Интернет мақолаҳои зиёде мавҷуданд, ки дар мавзӯи чӣ гуна пайвасти дурдаст ба сеанси мавҷудаи Xorg тавассути x11vnc насб кардан мумкин аст, аммо ман ҳеҷ ҷое наёфтам, ки чӣ гуна монитор ва вуруди маҳаллиро пахш кардан лозим аст, то касе дар паҳлӯи компютери дурдаст нишаста бошад. намебинад, ки шумо чӣ кор карда истодаед ва дар сессияи худ тугмаҳоро пахш намекунад. Дар зер усули ман барои сохтани x11vnc ба пайвастшавӣ ба Windows тавассути RDP монанд аст.

Пас, биёед бигӯем, ки шумо аллакай медонед, ки чӣ тавр истифода бурдани x11vnc, агар не, шумо метавонед google ё хонед, масалан дар ин ҷо.

дода шудааст: мо x11nvc-ро оғоз мекунем, ба он бо муштарӣ пайваст мешавем, ҳама чиз кор мекунад, аммо консоли маҳаллии компютер низ барои дидан ва вуруд дастрас аст.

Мо мехоҳем: консоли маҳаллиро (монитор + клавиатура + муш) хомӯш кунед, то чизе дида нашавад ё ворид нашавад.

Хомӯш кардани мониторҳо

Аввалин чизе, ки ба хотир омад, ин танҳо хомӯш кардани монитор тавассути xrandr буд, масалан:

$ xrandr --output CRT1 --off

аммо дар айни замон муҳити тирезасозӣ (ман KDE дорам) ба фикр кардан шурӯъ мекунад, ки монитор воқеан хомӯш карда шудааст ва ба партофтани тирезаҳо ва панелҳо шурӯъ мекунад, ҳама чиз берун меравад ва ғамгин мешавад.
Роҳи ҷолибтаре вуҷуд дорад, ки фиристодани монитор ба ҳолати интизорӣ, шумо метавонед ин корро, масалан:

$ xset dpms force off

вале дар ин чо хам на хама чиз муътадил аст. Система дар ҳодисаи аввал мониторро бедор мекунад. Асбобҳои соддатарин дар шакли давра кӯмак мекунанд:

while :
do
    xset dpms force off
    sleep .5
done

Ман минбаъд фикр намекардам - ​​ман танбал будам, он ба ҳадафи худ хизмат мекунад - мониторҳо чизе нишон намедиҳанд, ҳатто агар ман тугмаҳоро пахш кунам, мушро ҳаракат кунед ва ғайра.

ИПҶ - ИТТИҲОДИ ПОЧТАИ ҶАҲОНИ:

Спасибо амарао барои усули дигар бо табдил додани равшанӣ ба сифр:

$ xrandr --output CRT1 --brightness 0

Буридани вуруд

Барои хомӯш кардани вуруд ман xinput -ро истифода кардам. Вақте ки бе параметрҳо оғоз карда мешавад, он рӯйхати дастгоҳҳоро нишон медиҳад:

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

Дастгоҳҳо Асоси виртуалӣ ... шумо онро ғайрифаъол карда наметавонед - хатогӣ нишон дода мешавад, аммо боқимондаро метавон фурӯзон ва хомӯш кард, масалан, ҳамин тавр шумо метавонед як дақиқа бе муш монд:

xinput disable 9; sleep 60; xinput enable 9

Ҳалли калид

Барои парвандаи ман, ман скрипте сохтам, ки онро дар сессияи ssh иҷро мекунам. Он вуруди маҳаллиро пахш мекунад ва сервери x11vnc-ро баланд мекунад ва пас аз ба итмом расидани скрипт ҳама чиз мисли пештара бармегардад. Дар натиҷа, мо се скрипт гирифтем, инҳоянд (навсозӣ).

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

Дар асл, скрипти асосӣ (ман ду монитор дорам, ман як сервери умумӣ ва як мониторро барои ҳар як монитор насб кардам).

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

Ҳамааш ҳамин. Тавассути ssh ворид шавед ва оғоз кунед vnc_server, вақте ки ӯ зинда аст, мо тавассути vnc дастрасӣ дорем ва консоли маҳаллӣ хомӯш карда шудааст.

Ташаккур барои таваҷҷуҳ, иловаҳо ва такмилҳо хуш омадед.

Манбаъ: will.com

Илова Эзоҳ