خوش سب کو،
انٹرنیٹ پر اس موضوع پر بہت سارے مضامین موجود ہیں کہ x11vnc کے ذریعے موجودہ Xorg سیشن میں ریموٹ کنکشن کیسے ترتیب دیا جائے، لیکن مجھے کہیں نہیں ملا کہ مقامی مانیٹر اور ان پٹ کو کیسے دبایا جائے تاکہ ریموٹ کمپیوٹر کے ساتھ بیٹھا کوئی بھی شخص ایسا کرے۔ یہ نہیں دیکھتے کہ آپ کیا کر رہے ہیں اور اپنے سیشن میں بٹن نہیں دباتے ہیں۔ کٹ کے نیچے x11vnc کو RDP کے ذریعے ونڈوز سے منسلک کرنے کے لیے زیادہ مماثل بنانے کا میرا طریقہ ہے۔
تو، ہم کہتے ہیں کہ آپ کو پہلے ہی x11vnc استعمال کرنے کا طریقہ معلوم ہے، اگر نہیں، تو آپ گوگل کر سکتے ہیں یا مثال کے طور پر پڑھ سکتے ہیں
دیئے گئے: ہم x11nvc لانچ کرتے ہیں، اسے کلائنٹ کے ساتھ جوڑتے ہیں، سب کچھ کام کرتا ہے، لیکن کمپیوٹر کا مقامی کنسول دیکھنے اور ان پٹ کے لیے بھی دستیاب ہے۔
ہم چاہتے ہیں: مقامی کنسول (مانیٹر + کی بورڈ + ماؤس) کو بند کردیں تاکہ کچھ بھی نظر یا داخل نہ ہوسکے۔
مانیٹر بند کرنا
پہلی چیز جو ذہن میں آئی وہ صرف xrandr کے ذریعے مانیٹر کو بند کرنا تھا، مثال کے طور پر اس طرح:
$ xrandr --output CRT1 --off
لیکن ایک ہی وقت میں، کھڑکیوں کا ماحول (میرے پاس کے ڈی ای ہے) یہ سوچنا شروع کر دیتا ہے کہ مانیٹر واقعی بند ہو گیا ہے اور کھڑکیوں اور پینلز کو پھینکنا شروع کر دیتا ہے، ہر چیز باہر نکل جاتی ہے اور اداس ہو جاتی ہے۔
ایک اور دلچسپ طریقہ ہے، جو مانیٹر کو ہائبرنیشن میں بھیجنا ہے، آپ یہ کر سکتے ہیں مثال کے طور پر اس طرح:
$ 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
غیر فعال_لوکل_کنسول:
#!/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 کے ذریعے رسائی حاصل ہے اور مقامی کنسول بجھ گیا ہے۔
آپ کی توجہ کا شکریہ، اضافے اور بہتری کا خیرمقدم ہے۔
ماخذ: www.habr.com