Come esporre un socket di dominio UNIX direttamente su TCP


13

Vorrei avere un socket di dominio UNIX, ad esempio /var/program/program.cmd, esposto tramite TCP, diciamo sulla porta 12345. Vorrei anche che questo funzionasse a tempo pieno in background.

Qual'è il miglior modo per farlo? Se pertinente, il sistema esegue Ubuntu 12.04.2.

Anche con la soluzione proposta sopravviverà alla rimozione e alla ricostruzione del socket del dominio?

MODIFICARE

Ecco il risultato della risposta accettata sotto forma di uno script di init: https://github.com/Wirehive/haproxy-remote

Risposte:


18

È possibile utilizzare socatper esportare il socket unix come socket TCP. Ecco il comando per farlo:

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

Questo creerà l'ascolto del socket TCP sulla porta 12345 che si collegherà al socket unix menzionato del tuo programma.

Per il problema della cancellazione, non l'ho testato da solo. Puoi verificarlo e parlarcene :)

Nota: potresti non trovare socat installato, devi solo digitare: apt-get install socatper installarlo.


1
Grazie che ha funzionato praticamente, anche se è uscito dopo ogni comunicazione. Dopo aver suonato in giro sto avendo un buon successo con: socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd. L'unica domanda è: come faccio a farlo funzionare in background?
SimonJGreen

@SimonJGreen: Poiché questo non è un comando interattivo che richiede input, puoi semplicemente provare ad aggiungere &alla fine del comando.
Khaled,

OK, ho seguito il suggerimento e ho scritto uno script init per gestirlo. Ecco il risultato per chiunque sia interessato! github.com/Wirehive/haproxy-remote
SimonJGreen

@alexandermensa cura di elaborare?
Eduardo Bezerra,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.