Як виставити розетку домену UNIX безпосередньо через TCP


14

Я хотів би мати розетку домену UNIX, скажімо, /var/program/program.cmd, наприклад, експонуватися через TCP, скажімо, на порту 12345. Я також хотів би, щоб це працював увесь час у фоновому режимі.

Який найкращий спосіб зробити це? Якщо вона відповідає, система працює з Ubuntu 12.04.2.

Також із запропонованим рішенням чи витримає сокет домену видалення та відтворення?

EDIT

Ось результат прийнятої відповіді у вигляді сценарію init: https://github.com/Wirehive/haproxy-remote

Відповіді:


18

Ви можете використовувати socatдля експорту свого unix-сокета як socket 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 дбайливо розробити?
Едуардо Безерра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.