Cara mengekspos soket domain UNIX langsung melalui TCP

13

Saya ingin memiliki soket domain UNIX, misalnya /var/program/program.cmd misalnya, diekspos melalui TCP, katakanlah pada port 12345. Saya juga ingin ini berjalan penuh waktu di latar belakang.

Apa cara terbaik untuk melakukan ini? Jika relevan, sistem ini menjalankan Ubuntu 12.04.2.

Juga dengan solusi yang diusulkan akankah itu bertahan dari soket domain yang dihapus dan diciptakan kembali?

EDIT

Berikut ini adalah hasil dari jawaban yang diterima dalam bentuk skrip init: https://github.com/Wirehive/haproxy-remote

SimonJGreen
sumber

Jawaban:

18

Anda dapat menggunakan socatuntuk mengekspor soket unix Anda sebagai soket TCP. Inilah perintah untuk melakukannya:

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

Ini akan membuat TCP socket mendengarkan pada port 12345 yang akan terhubung ke soket unix yang disebutkan dari program Anda.

Untuk masalah penghapusan, saya tidak mengujinya sendiri. Anda dapat memverifikasinya dan memberi tahu kami tentang hal itu :)

Catatan: Anda mungkin tidak menemukan socat terpasang, Anda hanya perlu mengetik: apt-get install socatuntuk menginstalnya.

Khaled
sumber
1
Terima kasih sudah cukup banyak bekerja, meskipun keluar setelah setiap komunikasi. Setelah bermain di sekitar Saya mengalami sukses baik dengan: socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd. Satu-satunya pertanyaan adalah bagaimana saya menjalankannya di latar belakang?
SimonJGreen
@SimonJGreen: Karena ini bukan perintah interaktif yang memerlukan input, Anda bisa mencoba menambahkannya &di akhir perintah.
Khaled
OK saya berlari dengan saran dan menulis skrip init untuk menanganinya. Inilah hasilnya bagi siapa pun yang tertarik! github.com/Wirehive/haproxy-remote
SimonJGreen
@alexandermensa peduli untuk menjelaskan?
Eduardo Bezerra