Como expor um soquete de domínio UNIX diretamente pelo TCP


13

Eu gostaria de ter um soquete de domínio UNIX, digamos /var/program/program.cmd, por exemplo, exposto via TCP, digamos na porta 12345. Eu também gostaria que isso estivesse em execução em tempo integral em segundo plano.

Qual é a melhor forma de fazer isso? Se for relevante, o sistema está executando o Ubuntu 12.04.2.

Também com a solução proposta, ele sobreviverá ao soquete do domínio que está sendo removido e recriado?

EDITAR

Aqui está o resultado da resposta aceita na forma de um script init: https://github.com/Wirehive/haproxy-remote

Respostas:


18

Você pode usar socatpara exportar seu soquete unix como soquete TCP. Aqui está o comando para fazer isso:

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

Isso criará o soquete TCP que escuta na porta 12345 que se conectará ao soquete unix mencionado do seu programa.

Para o problema de exclusão, eu mesmo não testei. Você pode verificar e nos contar sobre isso :)

Nota: Você pode não encontrar o socat instalado, basta digitar: apt-get install socatpara instalá-lo.


1
Obrigado que praticamente funcionou, embora tenha saído após cada comunicação. Depois de brincar Eu estou tendo um bom sucesso com: socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd. A única questão é como faço para executá-lo em segundo plano?
SimonJGreen

@SimonJGreen: Como este não é um comando interativo que requer entrada, você pode apenas tentar adicionar &no final do comando.
Khaled

OK, eu corri com a sugestão e escrevi um script init para lidar com isso. Aqui está o resultado para qualquer pessoa interessada! github.com/Wirehive/haproxy-remote
SimonJGreen

@alexandermensa gostaria de elaborar?
Eduardo Bezerra
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.