socat:获取发件人的IP地址
我使用以下代码来接收连接:
socat TCP-LISTEN:4000,fork EXEC:"./myscrpit"
我需要在脚本中包含发件人的 IP 地址,但是 SOCAT_PEERADDR
没有设置,请问是什么问题?
I use following code to receive a connection:
socat TCP-LISTEN:4000,fork EXEC:"./myscrpit"
I need to have a sender's IP address in my script but SOCAT_PEERADDR
is not set, what is the problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用
pktinfo
选项作为TCP-LISTEN
,因此请使用以下代码:socat TCP-LISTEN:4000,pktinfo,fork EXEC:"./myscrpit
use
pktinfo
option forTCP-LISTEN
so use following code:socat TCP-LISTEN:4000,pktinfo,fork EXEC:"./myscrpit
仅供参考,但不提供答案。该命令适用于我:
但该命令不适用于:
希望此信息有帮助。对我来说,如果地址对不起作用,交换地址对的顺序可能会起作用。
Just for information, but not an answer. This command works for me:
But this command does not:
Hope this information helps. To me, if an address pair does not work, exchanging the order of the pair might work.
这似乎是问题所在:SOCAT_PEERADDR 是一个需要访问的环境变量,您需要生成一个shell。正如 socat-manpage(通过
man socat
获得)所暗示的那样,地址类型SYSTEM:
应该用于此,而不是EXEC:
。演示:以下内容按照
socat
v1.7.3.3 的要求执行。要进行检查,请从另一个终端运行
这应该会显示您的 IP。
This seems to be the problem: SOCAT_PEERADDR is an environment variable to access which you need to spawn a shell. As the socat-manpage (obtained with
man socat
) implies, the address typeSYSTEM:
should be used for this instead ofEXEC:
.Demo: The following performed as desired for
socat
v1.7.3.3.To check, from another terminal, run
This should show you your IP.