4

我使用以下代码接收连接:

socat TCP-LISTEN:4000,fork EXEC:"./myscrpit"

我需要在我的脚本中有一个发件人的 IP 地址,但SOCAT_PEERADDR没有设置,有什么问题?

4

3 回答 3

6

使用pktinfo选项TCP-LISTEN所以使用以下代码:

socat TCP-LISTEN:4000,pktinfo,fork EXEC:"./myscrpit

于 2011-11-27T11:08:51.210 回答
1

仅供参考,而不是答案。这个命令对我有用:

socat tcp-listen:12345 exec:./script

但是这个命令不会:

socat exec:./script tcp-listen:12345

希望这些信息有所帮助。对我来说,如果地址对不起作用,那么交换对的顺序可能会起作用。

于 2015-09-17T14:21:38.700 回答
0

这似乎是问题所在: SOCAT_PEERADDR 是一个要访问的环境变量,您需要生成一个shell。正如 socat 手册页(通过 获得man socat)所暗示的,SYSTEM:应该使用地址类型而不是EXEC:.

Demosocat : 对v1.7.3.3执行以下操作。

socat TCP-LISTEN:4000,fork SYSTEM:'echo "${SOCAT_PEERADDR}"'

要从另一个终端检查,请运行

nc localhost 4000

这应该向您显示您的IP。

于 2021-05-14T07:22:40.453 回答