Linux: แบ่งปันแป้นพิมพ์ผ่านเครือข่าย


12

ตามชื่อเรื่องฉันต้องการใช้แป้นพิมพ์ระยะไกลในพื้นที่ แป้นพิมพ์ระยะไกลควรใช้งานใน TTY และถ้าเป็นไปได้ใน X-Server เช่นกัน มีไดรเวอร์ (โมดูลเคอร์เนล) เลียนแบบแป้นพิมพ์ "ปลอม" ด้วยความโปร่งใสของเครือข่ายหรือไม่?

คำตอบ:


16

ฉันพบมันด้วยตัวเอง

ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณได้โหลดโมดูลเคอร์เนลevdevบนเครื่องทั้งสอง

บนเครื่องรีโมตที่คุณรัน:

$ cat /dev/input/by-path/platform-i8042-serio-0-event-kbd | nc <IP> 4444

และลูกค้า:

$ nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd

(หมายเหตุ: หากคุณกำลังใช้ netcat จาก netcat-openbsd เช่นใน Ubuntu หรือ Fedora อย่าใช้ '-p')

มันทำงานได้อย่างสมบูรณ์ไม่ว่าฉันจะอยู่ใน TTY หรือใน X.org และมันจะทำงานโดยไม่ชักช้า!

น่าเสียดายที่มีการพิมพ์ปุ่มทั้งหมดบนเครื่องระยะไกลเช่นกัน มีวิธีการปิดใช้งานชั่วคราวขณะที่ nc กำลังทำงานอยู่หรือไม่? ฉันคิดว่าบางคนชอบวิ่ง "cat -" บนเครื่องระยะไกล แต่ Ctrl-C จะทำให้จบแน่นอน


2
ฉันมีโชคดีขึ้นด้วยโดยไม่ต้องnc -l 4444 -pตามman nc, เป็นสิ่งต้องห้ามอย่างชัดเจนในการรวมกันกับ-p -lมิฉะนั้นนี้เป็นวิธีการแก้ปัญหาที่ยอดเยี่ยมและเป็นเพียงแค่สิ่งที่ฉันต้องการ :)
แมกนัสฮอฟฟ์

1
ฉันขอแนะนำให้คุณใช้ผ่านการเชื่อมต่อที่ปลอดภัยหรือในเครื่อง (แม้ว่าจะไม่ปลอดภัยอย่างใดอย่างหนึ่ง) มี snetcat ('netcat ที่ปลอดภัย') ที่สามารถทำงานได้หากคุณนำเข้าใบรับรอง (go, google it :-) นอกจากนี้โปรดยอมรับโซลูชันของคุณคำถามนี้ยังคงเป็น 'เปิด'
pruzinat

มันจะดีกว่านี้หากรองรับการคัดลอกและวาง !!
Chenming Zhang

ทางออกที่น่าทึ่ง! ฉันประทับใจที่คุณจัดการเพื่อหาสิ่งนี้ คุณพบวิธีแก้ปัญหาสำหรับการปิดการใช้งานเอาต์พุตบนเครื่องหนึ่งในขณะที่ทำงานบนอีกเครื่องหรือไม่?
Cestarian

7

ซินเนอร์จี้จะแชร์แป้นพิมพ์ผ่านเครือข่ายระหว่างเครื่องหลายเครื่อง ถ้ามันไม่ได้ทำในสิ่งที่คุณต้องการโดยตรงฉันแน่ใจว่ามีรหัสอยู่ที่นั่นซึ่งจะทำให้คุณติดตั้งได้ง่าย


Synergy + เป็น 'การแยกส่วน' ของการทำงานร่วมกันที่ยังคงรักษาไว้สำหรับการแก้ไขข้อบกพร่อง นอกจากนี้การทำงานร่วมกันอย่างรวดเร็วยังมีอยู่ในที่เก็บแพคเกจ Debian และให้ GUI wrapper สำหรับการทำงานร่วมกัน
Josiah

3
Synergy จริง ๆ แล้วขึ้นอยู่กับ X-Server ฉันต้องการโซลูชันที่ใช้งานได้ใน TTY หากฉันรู้วิธีเลียนแบบการกดปุ่มใน TTY ฉันจะพยายามเขียนแอปพลิเคชันขนาดเล็กด้วยตัวเอง น่าเสียดายที่ฉันไม่พบสิ่งใดที่มีค่าใน Google บางทีใครบางคนสามารถให้คำแนะนำแก่ฉันได้บ้าง?
ทิม

5

ลองดูที่Synergy

ซินเนอร์จี้เป็นซอฟต์แวร์ฟรีและโอเพ่นซอร์สที่ให้คุณแชร์เมาส์และคีย์บอร์ดระหว่างคอมพิวเตอร์หลาย ๆ เครื่องที่คอมพิวเตอร์แต่ละเครื่องมีจอแสดงผลของตัวเอง ไม่จำเป็นต้องใช้ฮาร์ดแวร์พิเศษเพียงคุณมีเครือข่ายท้องถิ่น สนับสนุนการทำงานร่วมกันบน Windows, Mac OS X และ Linux การเปลี่ยนเส้นทางเมาส์และคีย์บอร์ดทำได้ง่ายดายเพียงเลื่อนเมาส์ออกจากขอบหน้าจอของคุณ

ทำงานร่วมกัน


0

คำแนะนำข้างต้นของการใช้ nc (netcat) ไม่ทำงานสำหรับฉัน

ฉันสามารถเปิดสตรีมอินพุตโดยใช้คำสั่งนี้:

nc -l -p 4444 > /dev/input/by-path/platform-i8042-serio-0-event-kbd

ฉันได้รับอนุญาตปฏิเสธแม้ว่าฉันจะทำมันเป็น sudo เครื่องเป้าหมายมีการติดตั้ง linux ที่เก่าแก่มากดังนั้นไฟล์ / dev / input อาจจะเป็นแบบอ่านอย่างเดียวเมื่อ

อย่างไรก็ตามฉันสามารถแก้ไขปัญหานี้ได้ด้วยการใช้ x2x และผลลัพธ์นั้นใช้ง่ายมาก

คุณต้องทำ "xhost +" บนเครื่องเป้าหมายและใช้ gdmsetup เพื่อเปิดใช้งานการเชื่อมต่อระยะไกล (สิ่งนี้จะลบแฟล็ก -nolisten สำหรับ X ในครั้งถัดไปที่ gdm เรียกใช้งานเซสชัน X)

หลังจากนั้น xserver ของคุณจะเปิดกว้างสำหรับการเชื่อมต่อระยะไกลและ x2x สามารถเชื่อมต่อกับมันได้จากเครื่องต้นทาง (แป้นพิมพ์)

x2x -to 192.168.1.3:0

สิ่งที่ยอดเยี่ยมเกี่ยวกับ x2x คือมันช่วยให้คุณมีหน้าต่างควบคุมเล็กน้อยบนเครื่องต้นทางและเหตุการณ์แป้นพิมพ์จะถูกส่งไปยังเป้าหมายเมื่อหน้าต่างนั้นถูกโฟกัสเท่านั้น นี่เป็นวิธีที่สะดวกมากในการทำ (ฉันกำลังพิมพ์คำตอบนี้จากเครื่องต้นทางในตอนนี้และไม่มีการกดปุ่มจรจัดถึงเครื่องเป้าหมายเพราะฉันไม่มีการเน้นหน้าต่างควบคุม) นอกจากนี้การคลิกที่กึ่งกลางของหน้าต่างควบคุมจะเริ่มส่งต่อเหตุการณ์เมาส์เช่นกันและการคลิก 2 ปุ่มจะสิ้นสุดการส่งกิจกรรมเมาส์ นอกจากนี้เมื่อคุณเปิดใช้งานการส่งต่อเมาส์ด้วยการคลิกในหน้าต่างควบคุมเหตุการณ์แป้นพิมพ์ทั้งหมดจะถูกส่งไปยังเป้าหมายและไม่มีไปยังแหล่งที่มา ดังนั้น ALT-TAB จะถูกส่งไปยังเป้าหมายโดยไม่ทำการเบลอหน้าต่างควบคุมบนเครื่องต้นทาง

ฉันเปิดใช้งานเดสก์ท็อปเสมือนบนเครื่องต้นทางดังนั้นฉันจึงติดหน้าต่างควบคุม x2x บนเดสก์ท็อประยะไกลและไปที่นั่นเมื่อฉันต้องการควบคุมเครื่องเป้าหมายเท่านั้น

โซลูชันรุ่นนี้อยู่ที่ระดับ X ซึ่งคำตอบข้างต้นอยู่ที่ระดับอุปกรณ์ linux แน่นอนว่าสิ่งนี้จะไม่ทำงานเลยหากคุณไม่ได้ใช้ X บนทั้งเป้าหมายและแหล่งที่มา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.