Comment exposer un socket de domaine UNIX directement sur TCP

13

J'aimerais avoir une socket de domaine UNIX, disons /var/program/program.cmd par exemple, exposée via TCP, disons sur le port 12345. J'aimerais aussi que cela fonctionne à plein temps en arrière-plan.

Quelle est la meilleure façon de procéder? Si cela est pertinent, le système exécute Ubuntu 12.04.2.

La solution proposée survivra-t-elle également à la suppression et à la recréation de la socket de domaine?

ÉDITER

Voici le résultat de la réponse acceptée sous la forme d'un script d'initialisation: https://github.com/Wirehive/haproxy-remote

SimonJGreen
la source

Réponses:

18

Vous pouvez utiliser socatpour exporter votre socket Unix en tant que socket TCP. Voici la commande pour le faire:

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

Cela créera l'écoute du socket TCP sur le port 12345 qui se connectera au socket unix mentionné de votre programme.

Pour le problème de suppression, je ne l'ai pas testé moi-même. Vous pouvez le vérifier et nous en parler :)

Remarque: vous ne trouverez peut-être pas socat installé, il vous suffit de taper: apt-get install socatpour l'installer.

Khaled
la source
1
Merci qui a plutôt bien fonctionné, même si cela s'est terminé après chaque communication. Après avoir joué , je vais avoir un bon succès avec: socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd. La seule question est de savoir comment le faire fonctionner en arrière-plan?
SimonJGreen
@SimonJGreen: Comme il ne s'agit pas d'une commande interactive qui nécessite une entrée, vous pouvez simplement essayer d'ajouter &à la fin de la commande.
Khaled
OK, j'ai couru avec la suggestion et j'ai écrit un script d'initialisation pour le gérer. Voici le résultat pour toute personne intéressée! github.com/Wirehive/haproxy-remote
SimonJGreen
@alexandermensa soin d'élaborer?
Eduardo Bezerra