我正在尝试将socket监听到bash以产生动态响应。我试过这样做nc -l 8088 -c``echo 'Request got, let's produce it'
但是-c选项现已弃用且不受支持。
然后我尝试使用/ dev / tcp列出端口:exec 3<>/dev/tcp/127.0.0.1/8088;
cat <&3
但是我遇到了错误:
connect: Connection denied*
line 1: /dev/tcp/127.0.0.1/8088: Connection denied*
line 2: 3: Wrong file descriptor*
答案 0 :(得分:1)
根据Bash手册页,该语法用于打开与现有套接字的连接。我不知道只使用Bash创建套接字的选项。并且您的nc命令使用端口8000而不是8088。
[更新] 好的,但是你也缺少-p开关来设置端口。之前没有抓住它。
jcomeau@intrepid:~$ nc -l -p8088 -c 'echo bleah' &
[1] 4752
jcomeau@intrepid:~$ exec 3<>/dev/tcp/127.0.0.1/8088; cat <&3
bleah
有关使用管道的示例,请参阅本页底部的代理说明:http://www.stearns.org/doc/nc-intro.v0.9.html,希望您可以根据需要进行调整。
为什么不使用inetd?使用netcat和Bash的主要问题是我没有直接的方式来回复发送回复,因为你不知道他们用来连接的是什么端口。而inetd为你处理tcp / ip连接,让你的shell脚本只处理stdin和stdout。