如何使用bash进行动态响应

时间:2011-08-16 21:37:46

标签: bash shell

我正在尝试将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*
  • 从俄语单词翻译

1 个答案:

答案 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。