เริ่ม Synergy (หรือแอปพลิเคชันใด ๆ ) ก่อนเข้าสู่ระบบใน Ubuntu 16.04.2 LTS


14

การใช้Ubuntu 16.04.2 (Xenial)บนIntel x64 : {ทั้งโปรเซสเซอร์และการติดตั้ง Ubuntu}

คำถามนี้ได้รับการตอบเป็นล้านครั้ง แต่ไม่มีวิธีแก้ปัญหาใด ๆ ดังนั้นฉันไม่ต้องการทำซ้ำคำถาม แต่ยังไม่ได้รับคำตอบ

เมื่อฉันเปิดเครื่องปลายทางและsudo -iคำสั่งต่อไปนี้ทำงานได้ตามปกติ

`root@user-pc:~# /usr/bin/synergyc -f --no-tray --debug INFO --name 
 user-pc 192.168.xxx.xxx:24800
 [2017-05-23T09:20:44] NOTE: started client
 [2017-05-23T09:21:01] NOTE: connecting to '192.168.5.100': 
 192.168.5.100:24800
 [2017-05-23T09:21:01] NOTE: connected to server`

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

สิ่งแรกที่ฉันลองคือrc.local :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exec /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 192.168.5.100:24800

exit 0

~~~ ls /etc/rc.local -l:

-rwxr-xr-x 1 root root 390 May 22 20:56 /etc/rc.local

ดังนั้นมันจึงรันได้แน่นอน แต่เมื่อรีบูตเครื่องพีซี:

~~~ ps aux | grep syner:

`root  990  0.0  0.0  63656  5372 ?  Ssl  09:33  0:00 
 /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 
 192.168.5.100:24800`

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

ข้อสันนิษฐานที่ปลอดภัยที่สุดของฉันคือโปรแกรมกำลังทำงานได้ดีปัญหาคือ rc.local ทำงานก่อนที่จะเริ่มเซสชัน x ดังนั้นตะขอใด ๆ บนแป้นพิมพ์และเมาส์จะไม่ถูกสร้างขึ้น การดำเนินการของsynergycและไม่พยายามอีกครั้งเกินกว่าจุดนั้น

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

หากข้อสันนิษฐานของฉันถูกต้อง:

วิธีเรียกการดำเนินการของกระบวนการคืออะไรหลังจากเซิร์ฟเวอร์ x ทำงาน แต่ก่อนที่ผู้ใช้จะต้องลงชื่อเข้าใช้

หากข้อสันนิษฐานของฉันไม่ถูกต้อง:

ช่วยด้วย


1
อาจจะ GDM คุณต้องการและความสามัคคีคุณจะต้องเพิ่มสคริปต์เพื่อ/etc/gdm/Init/Default /etc/init/lightdm.conf
Rinzwind

@Rinzwind lightdm.conf ยังเร็วเกินไปแม้ในส่วนของโพสต์สตาร์ทมันเกิดข้อผิดพลาดในการทำงานร่วมกันโดยใช้คำสั่งเดียวกันที่ทำงานได้อย่างสมบูรณ์แบบจากเทอร์มินัล Ubuntu โยนข้อผิดพลาดว่าการทำงานร่วมกันหยุดกะทันหันอาจเป็นเพราะมันไม่สามารถเข้าถึง hooks ที่ต้องควบคุมแป้นพิมพ์และเมาส์ได้ แต่ต้องการให้มันเกิดขึ้นทันทีเมื่อหน้าจอเข้าสู่ระบบปรากฏขึ้นเพื่อให้ทุกอย่างทำงานได้แล้ว
DeeJayh

ไม่เป็นประโยชน์มากนัก แต่อาจจะรู้สึกปลื้มนิดหน่อย - ฉันต้องดิ้นรนกับเรื่องนี้ประมาณหนึ่งปีก่อนที่จะยอมแพ้ (GDM) ... ฉันได้ตัดสินใจในสิ่งที่ฉันคิดว่าเป็นวิธีที่ "อาจ" ทำงาน: ผู้ใช้ systemd สองหน่วยสำหรับ การเข้าสู่ระบบเซิร์ฟเวอร์ x เสมือน (คิดว่าคีออสก์ แต่ไม่แสดง) จากนั้นทริกเกอร์จะฆ่าสิ่งนั้นเมื่อผู้ใช้จริงเข้าสู่ระบบ ในที่สุดสำหรับกรณีการใช้งานของฉันมันไม่คุ้มค่า แต่อาจช่วยคุณได้ ลูกเห็บ ACME ทั้งหมด!
Mark

ถ้าฉันไม่เข้าใจผิดว่า synergy ต้องการเซิร์ฟเวอร์ X ดังนั้นจึงไม่สามารถทำงานได้หากไม่มีผู้ใช้ที่ลงชื่อเข้าใช้
Ziazis

แค่แทงป่าในความมืด แต่คุณลองเพิ่มไป.xinitrcรึเปล่า?
ไม่ระบุชื่อ 2

คำตอบ:


6

สำหรับ16.04.2 ให้สร้างไฟล์ต่อไปนี้ (ไม่มีอยู่)

/etc/lightdm/lightdm.conf

มีเนื้อหา:

[Seat:*]
autologin-user=

[SeatDefaults]
greeter-setup-script=/usr/bin/synergyc --name <hostname> 192.168.x.x

ทำตามคำแนะนำในUbuntuสำหรับข้อมูลเพิ่มเติม


แก้ไข:

จากman synergyc:

เริ่มโดยอัตโนมัติ ...

ตัวเลือกจะต้องไม่รวมหรือ-f --no-daemonเป็นเรื่องสำคัญที่จะต้องตรวจสอบให้แน่ใจว่าไม่มีการทำงานร่วมกันของสำเนาแบบเก่าดังนั้นพวกเขาจึงไม่สามารถเข้าไปยุ่งเกี่ยวกับเรื่องใหม่ได้


2
นั่นเป็นเรื่องดีจริง ๆ ! เป็นการดีที่จะรู้เพียงเพิ่มเข้าไป/etc/lightdm/lightdm.confก็เพียงพอที่จะทำให้มันทำงานได้อย่างสมบูรณ์ อาจเพิ่มสิ่งที่เขาต้องเพิ่มลงในคำตอบแทนที่จะเชื่อมโยงเฉพาะการเชื่อมโยงอูบุนตู
Ziazis

1
สปาหากคุณมีการเข้าสู่ระบบอัตโนมัติเพียงแค่เพิ่มการทำงานร่วมกับแอปพลิเคชันเริ่มต้นของคุณ
Ziazis

2
ค่อนข้างแน่ใจว่าใช้งานได้กับ Ubuntu รุ่นเก่า แต่ไม่ใช่ของฉัน ฉันสร้าง /etc/lightdm/lightdm.conf เพราะมันไม่มีอยู่และใส่ไว้ในสองบรรทัดด้านบน (แน่นอนว่าการเปลี่ยนแปลงเพื่อใช้ข้อมูลของตัวเอง) ตอนนี้ฉันมีการเชื่อมต่อแบบ Synergy เมื่อหน้าจอโหลดขึ้น แต่ตอนนี้ฉันไม่ได้อีกต่อไป รับหน้าจอเข้าสู่ระบบ มันเป็นเพียงหน้าจอว่างเปล่าที่มีเคอร์เซอร์ X $ sudo find / -name lightdm.confให้/etc/init/lightdm.confและ/etc/lightdm/lightdm.confหลังเป็นสิ่งที่ฉันสร้างขึ้นด้วยตนเองด้วยสองซับใน การลบ lightdm.conf ที่ฉันสร้างขึ้นจะคืนค่ากลับสู่การทำงาน
DeeJayh

1
ฉันสามารถยืนยันได้ว่าวิธีนี้ใช้ได้กับ 16.04.2!
pa4080

1
@SpasSpasov ฉันรู้ว่าฉันตื่นเต้นมากฉันเปลี่ยนคำตอบเพื่อสะท้อนถึงข้อมูลเฉพาะของเรารอการตรวจสอบจากเพื่อน
DeeJayh

1

เข้าสู่การเริ่มต้นของคุณ .. สำหรับมือใหม่อย่างฉันทำอย่างนี้:

  • "ค้นหาคอมพิวเตอร์ของคุณ" ในประเภทเริ่มต้นคลิกที่แอปพลิเคชันเริ่มต้น
  • คลิกเพิ่ม

    • ชื่อ: ซินเนอร์จี้
    • คำสั่ง: เรียกดูหากคุณต้องการ แต่ / usr / bin / synergy

    อย่าเพิ่ม "c" ใด ๆ ไม่มีอะไรให้จบจากการทำงานร่วมกัน

ตอนนี้ฉันยังมีสคริปต์ที่ใช้งานอยู่เพราะฉันขี้เกียจเกินไปที่จะลบมัน .. ดังนั้นทั้งคู่ก็อยู่ที่นั่น

[Seat:*]
autologin-user=

[SeatDefaults]
greeter-setup-script=/usr/bin/synergyc --MediaServer 192.168.2.253:port

ตอนนี้การค้นหาพอร์ตน่าสนใจไม่ใช่พอร์ตเริ่มต้นดังนั้นให้ทำเช่นนี้ในเทอร์มินัล

netstat  -atn

ตอนนี้ฉันพบว่ามันค้นหาเซิร์ฟเวอร์ ip ของคุณ ... ฉันรู้ว่าเซิร์ฟเวอร์ SYNERGY ของฉัน ip ตรงข้ามเลยจากนั้นคือหมายเลขไอพีไคลเอ็นต์และหมายเลขพอร์ตของฉัน

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