Jak udostępnić gniazdo domeny UNIX bezpośrednio przez TCP

14

Chciałbym mieć gniazdo domeny UNIX, powiedzmy na przykład /var/program/program.cmd, ujawnione przez TCP, powiedzmy na porcie 12345. Chciałbym również, aby działało to cały czas w tle.

Jak najlepiej to zrobić? Jeśli ma to znaczenie, system działa Ubuntu 12.04.2.

Czy również dzięki proponowanemu rozwiązaniu przetrwa usunięcie i ponowne utworzenie gniazda domeny?

EDYTOWAĆ

Oto wynik zaakceptowanej odpowiedzi w postaci skryptu inicjującego: https://github.com/Wirehive/haproxy-remote

SimonJGreen
źródło

Odpowiedzi:

18

Możesz użyć socatdo wyeksportowania gniazda unix jako gniazda TCP. Oto polecenie, aby to zrobić:

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

Spowoduje to utworzenie gniazda TCP nasłuchującego na porcie 12345, który połączy się ze wspomnianym gniazdem unix twojego programu.

Jeśli chodzi o kwestię usuwania, nie testowałem tego sam. Możesz to zweryfikować i powiedzieć nam o tym :)

Uwaga: Socat może nie być zainstalowany, wystarczy wpisać: apt-get install socataby go zainstalować.

Khaled
źródło
1
Dzięki, że prawie działało, chociaż wychodziło po każdej komunikacji. Po zabawy mam dobrego sukcesu z: socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd. Jedyne pytanie brzmi: jak to działa w tle?
SimonJGreen
@ SimonJGreen: Ponieważ nie jest to polecenie interaktywne, które wymaga danych wejściowych, możesz po prostu spróbować dołączyć je &na końcu polecenia.
Khaled
OK. Uruchomiłem sugestię i napisałem skrypt inicjujący, aby sobie z tym poradzić. Oto wynik dla wszystkich zainteresowanych! github.com/Wirehive/haproxy-remote
SimonJGreen
@alexandermensa chcesz opracować?
Eduardo Bezerra