socat:获取发件人的IP地址

时间:2011-11-25 06:59:04

标签: tcp ip socat

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

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

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

3 个答案:

答案 0 :(得分:5)

pktinfo使用TCP-LISTEN选项,因此请使用以下代码:

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

答案 1 :(得分:0)

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

socat tcp-listen:12345 exec:./script

但是这个命令没有:

socat exec:./script tcp-listen:12345

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

答案 2 :(得分:0)

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

演示:按照socat v1.7.3.3 的需要执行以下操作。

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

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

nc localhost 4000

这应该会显示您的 IP。