วิธีเปิดเผยซ็อกเก็ตโดเมน UNIX ผ่าน TCP โดยตรง


14

ฉันต้องการมีซ็อกเก็ตโดเมน UNIX เช่น /var/program/program.cmd ตัวอย่างเช่นเปิดเผยผ่าน TCP ให้พูดที่พอร์ต 12345 นอกจากนี้ฉันยังต้องการให้ทำงานเต็มเวลาในพื้นหลัง

วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ถ้ามันเกี่ยวข้องระบบกำลังใช้งาน Ubuntu 12.04.2

นอกจากนี้ยังมีโซลูชันที่เสนอจะอยู่รอดได้ในซ็อกเก็ตโดเมนที่ถูกลบและสร้างใหม่?

แก้ไข

นี่คือผลลัพธ์ของคำตอบที่ยอมรับในรูปแบบของสคริปต์เริ่มต้น: https://github.com/Wirehive/haproxy-remote

คำตอบ:


18

คุณสามารถใช้socatเพื่อส่งออกซ็อกเก็ตยูนิกซ์ของคุณเป็นซ็อกเก็ต TCP นี่คือคำสั่งให้ทำ:

socat TCP-LISTEN:12345 UNIX-CONNECT:/var/program/program.cmd

สิ่งนี้จะสร้างซ็อกเก็ต TCP ฟังบนพอร์ต 12345 ซึ่งจะเชื่อมต่อกับซ็อกเก็ต unix ที่กล่าวถึงของโปรแกรมของคุณ

สำหรับปัญหาการลบฉันไม่ได้ทดสอบด้วยตัวเอง คุณสามารถตรวจสอบและบอกเราเกี่ยวกับมัน :)

หมายเหตุ: คุณอาจไม่พบ socat ที่ติดตั้งคุณเพียงแค่ต้องพิมพ์: apt-get install socatเพื่อติดตั้ง


1
ขอบคุณที่ใช้งานได้ดีแม้ว่ามันจะออกมาหลังจากสื่อสารกัน หลังจากเล่นไปรอบ ๆ แล้วฉันก็ประสบความสำเร็จกับ: socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd. คำถามเดียวคือฉันจะให้มันทำงานในพื้นหลังได้อย่างไร
SimonJGreen

@SimonJGreen: เนื่องจากนี่ไม่ใช่คำสั่งเชิงโต้ตอบที่ต้องใช้อินพุตคุณสามารถลองต่อ&ท้ายคำสั่งได้
เลด

ตกลงฉันวิ่งไปกับข้อเสนอแนะและเขียนสคริปต์ init เพื่อจัดการกับมัน นี่คือผลลัพธ์สำหรับทุกคนที่สนใจ! github.com/Wirehive/haproxy-remote
SimonJGreen

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