Как открыть сокет домена UNIX напрямую через TCP

13

Мне бы хотелось, чтобы сокет домена UNIX, например, /var/program/program.cmd, был открыт через TCP, скажем, через порт 12345. Мне также хотелось бы, чтобы он работал в фоновом режиме.

Какой лучший способ сделать это? Если это актуально, система работает под управлением Ubuntu 12.04.2.

Также с предложенным решением это переживет сокет домена, удаленный и воссозданный?

РЕДАКТИРОВАТЬ

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

SimonJGreen
источник

Ответы:

18

Вы можете использовать socatдля экспорта свой сокет Unix в качестве сокета 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: поскольку это не интерактивная команда, требующая ввода, вы можете просто попробовать добавить ее &в конце команды.
Халед
Хорошо, я побежал с предложением и написал сценарий инициализации, чтобы справиться с ним. Вот результат для всех, кто заинтересован! github.com/Wirehive/haproxy-remote
SimonJGreen
@alexandermensa хотите разработать?
Эдуардо Безерра