如何使用nc,echo,xargs等工具编写echo服务器bash脚本,这些工具能够同时处理来自多个客户端的请求,每个客户端都具有持久连接?
我到目前为止最好的是
nc -l -p 2000 -c 'xargs -n1 echo'
但它只允许一个连接。
如果您使用ncat而不是nc,您的命令行可以正常使用多个连接但(如您所指出的)没有-p。
ncat -l 2000 -k -c 'xargs -n1 echo'
ncat可在http://nmap.org/ncat/获得。
附:原版Hobbit的netcat(nc)不支持-c标志。
更新:现在需要-k( - keep-open)来处理多个连接。
这里有些例子。 ncat simple services
TCP echo服务器
ncat -l 2000 --keep-open --exec "/bin/cat"
UDP echo服务器
ncat -l 2000 --keep-open --udp --exec "/bin/cat"
如果ncat不是一个选项,socat也会工作:
socat TCP4-LISTEN:2000,fork EXEC:cat
fork
是必要的,因此可以接受多个连接。将reuseaddr
添加到TCP4-LISTEN
可能很方便。
qazxsw poi解决方案预先安装在Ubuntu中
预装在Ubuntu 16.04中的netcat
来自netcat
,并且没有netcat-openbsd
选项,但手册提供了一个解决方案:
-c
客户端示例:
sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo
TODO:如何修改输入字符串值?以下内容未返回任何回复:
echo abc | netcat localhost 8000
然而,远程shell示例有效:
cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo
但是,我不知道如何处理并发请求。
关于什么...
cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo