Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ 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

НС сС замислих ΠΏΠΎΠ²Π΅Ρ‡Π΅ - ΠΌΡŠΡ€Π·Π΅ΡˆΠ΅ ΠΌΠ΅, слуТи си - ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ Π½ΠΈΡ‰ΠΎ, Π΄ΠΎΡ€ΠΈ Π΄Π° натискам Π±ΡƒΡ‚ΠΎΠ½ΠΈΡ‚Π΅, Π΄Π° мСстя ΠΌΠΈΡˆΠΊΠ°Ρ‚Π° ΠΈ Ρ‚.Π½.

UPS:

Благодаря Π°ΠΌΠ°Ρ€Π°ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΎΠ±Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° яркостта Π΄ΠΎ Π½ΡƒΠ»Π°:

$ 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_ΡΡŠΡ€Π²ΡŠΡ€:

#!/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_ΡΡŠΡ€Π²ΡŠΡ€, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π΅ ΠΆΠΈΠ² ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΏΡ€Π΅Π· vnc ΠΈ Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π° Π΅ угасСна.

Благодаря Π²ΠΈ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ, Π΄ΠΎΠΏΡŠΠ»Π½Π΅Π½ΠΈΡΡ‚Π° ΠΈ подобрСнията са Π΄ΠΎΠ±Ρ€Π΅ дошли.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€