Real VNC บน Ubuntu 10.04 LTS ผ่าน xinetd


0

ฉันกำลังพยายามหาเซิร์ฟเวอร์ VNC จริงบน Ubuntu 10.04 LTS 64 บิต

ฉันลอง 2 ตัวเลือก ก่อนอื่นฉันได้รับ Real VNC รุ่นฟรีและทำงานได้หลังจากที่ทุกอย่างต้องใช้ไลบรารี 32 บิตการแฮ็คการกำหนดค่า ฯลฯ มันเกือบจะดีกับปัญหาเล็ก ๆ น้อย ๆ หลังจากที่ฉันยกเลิกการเชื่อมต่อไคลเอนต์เซิร์ฟเวอร์พิมพ์Abortedและออก ฉันลองใช้ชุดค่าผสมหลายชุดและไม่สามารถหาได้

นี่เป็นบรรทัดคำสั่งที่ฉันใช้ (แต่ฉันลองชุดพารามิเตอร์หลายตัว)

Xvnc :2 -desktop user-desktop -query localhost -geometry 1920x1200 -depth 16 -AcceptCutText -SendCutText -rfbauth /home/user/.vnc/passwd -SecurityTypes None -DisconnectClients

ตัวเลือกที่สอง ฉันได้รับเวอร์ชันทดลองใช้ของ Real VNC Enterprise 4.6.1 และติดตั้งแล้ว ตอนนี้ฉันสามารถเริ่มต้นได้อย่างมีความสุขในฐานะเซิร์ฟเวอร์แบบสแตนด์อโลนและลูกค้าของฉันสามารถยกเลิกการเชื่อมต่อได้โดยไม่ต้องฆ่าเซิร์ฟเวอร์ แต่เมื่อฉันพยายามใช้ด้วย-inetdตัวเลือก เมื่อฉันลองรุ่นฟรีมันจะเข้าสู่โหมด stdio และพิมพ์ข้อความจับมือกัน

RFB 003.008

ไม่ใช่กรณีที่มีรุ่นองค์กร มันเพิ่งออกไป ไม่มีข้อความและไม่มีบันทึก

ดังนั้นใครบ้างมีความคิดเกี่ยวกับวิธีการทำงานตัวเลือกอย่างใดอย่างหนึ่ง


ต่อคำแนะนำจาก @grawity ผมทำงานและstrace ltraceนี่คือผลลัพธ์ที่น่าสนใจที่สุดจาก ltrace (ฉันรวบรวมข้อมูลในไฟล์ชื่อ abc และวางบรรทัดที่ฉันสนใจเท่านั้น):

$cat abc | egrep 'strchr|print'

fprintf(0x7f330223e860, "\n%s", "Sun Jul 10 13:07:30 2011\n") = 26
strchr("inetd client gone, exiting", ' ')        = " client gone, exiting"
strchr("client gone, exiting", ' ')              = " gone, exiting"
strchr("gone, exiting", ' ')                     = " exiting"


$ cat abc | egrep 'strchr|print' | grep socket
strchr("getpeername: Socket operation on"..., ' ') = " Socket operation on non-socket "...
strchr("Socket operation on non-socket ("..., ' ') = " operation on non-socket (88)"
strchr("operation on non-socket (88)", ' ')      = " on non-socket (88)"
strchr("on non-socket (88)", ' ')                = " non-socket (88)"
strchr("non-socket (88)", ' ')                   = " (88)" 

คำตอบ:


1

ลองใช้ภายใต้หรือltracestrace

อาจเป็นไปได้ว่าโหมดinetdต้องการให้stdinและstdoutเป็นซ็อกเก็ต - ตัวอย่างเช่นนี้จำเป็นสำหรับการกำหนดที่อยู่ IP ของลูกค้า อาจเป็นไปได้ว่า RealVNC ไม่ได้เตรียมพร้อมสำหรับgetpeername()การส่งคืนความล้มเหลว

หรือใช้ Xvnc


ขอบคุณสำหรับการกล่าวถึง strace และ ltrace คุณอาจจะถูกเกี่ยวกับซ็อกเก็ต ฉันอัปเดตคำถามของฉันด้วยผลลัพธ์ของ ltrace แต่ฉันจะทำอย่างไรต่อไปเพื่อแก้ไขมัน
Alex Gitelman

@Alex: ปัญหาไม่ควรเกิดขึ้นเมื่อเรียกใช้ RealVNC ภายใต้xinetd จริง คุณเคยลองแล้วใช่ไหม
grawity

ฉันพยายามจาก xinetd จริง ฉันสามารถเชื่อมต่อดูที่หน้าจอ X หนึ่งวินาทีจากนั้นก็ตาย ฉันยังไม่สามารถหาวิธีการบันทึกจาก vnc ได้
Alex Gitelman

ลองแพ็คเก็ตดมกลิ่น; ข้อความผิดพลาดมักจะไปที่ stderr ซึ่งถูกส่งผ่านซ็อกเก็ตเดียวกันโดย xinetd ตรวจสอบdmesgโปรแกรมขัดข้องและ/var/log/messages| /var/log/syslog| /var/log/everything.logสำหรับบันทึก VNC
grawity

ที่จริงฉันตั้งใจ :( พบบันทึก vnc ไม่แน่ใจว่าทำไมฉันพยายามที่จะนำไปยังสถานที่ที่เฉพาะเจาะจงล้มเหลวมันก็แค่บอกว่าinetd client is goneแต่อย่างไรก็ตามเห็นได้ชัดว่ามีปัญหาสิทธิ์ฉันเปลี่ยนผู้ใช้ในไฟล์ xinetd config ให้กับตัวเองและตอนนี้ ฉันสามารถเชื่อมต่อได้อย่างไรก็ตามมันยังคงตายเมื่อฉันยกเลิกการเชื่อมต่อกับไคลเอนต์ฉันคิดว่ามีตัวเลือกสำหรับ xinetd ที่ควบคุมมันฉันกำลังดูผ่านเอกสารและอาจจะพบ แต่คุณจำได้บนหัวของคุณหรือไม่
Alex Gitelman
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.