如何直接通过TCP公开UNIX域套接字


13

我想要一个UNIX域套接字,例如通过TCP公开的/var/program/program.cmd,让它在端口12345上说。我还希望它在后台全时运行。

最好的方法是什么?如果相关,则系统正在运行Ubuntu 12.04.2。

同样,通过提出的解决方案,它可以在删除并重新创建的域套接字中生存下来吗?

编辑

这是初始化脚本形式的已接受答案的结果:https : //github.com/Wirehive/haproxy-remote

Answers:


18

您可以socat用来将unix套接字导出为TCP套接字。这是这样做的命令:

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

这将在端口12345上创建侦听TCP套接字,该端口将连接到程序的Unix套接字。

对于删除问题,我自己没有进行测试。您可以验证并告诉我们:)

注意: 您可能找不到安装的socat,只需输入:apt-get install socat即可安装。


1
谢谢,尽管它在每次通信后都退出了,但几乎奏效了。上场后围绕我有良好的成功:socat TCP-LISTEN:12345,reuseaddr,fork,su=haproxy UNIX-CLIENT:/var/program/program.cmd。唯一的问题是如何让它在后台运行?
SimonJGreen

@SimonJGreen:由于这不是需要输入的交互式命令,因此您可以尝试&在命令末尾附加。
哈立德2013年

好的,我接受了建议并编写了一个初始化脚本来处理它。这是任何有兴趣的人的结果!github.com/Wirehive/haproxy-remote
SimonJGreen 2013年

@alexandermensa关心详细吗?
爱德华多·贝塞拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.