我使用以下代码来接收连接:
socat TCP-LISTEN:4000,fork EXEC:"./myscrpit"
我需要在我的脚本中设置发件人的IP地址,但未设置SOCAT_PEERADDR
,问题是什么?
答案 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。