我想创建一个回显服务器而不在字符串中指定任何命令。我希望所有命令都通过管道连接。
这似乎不可能,因为在请求可以传递给响应生成逻辑之前返回响应。似乎我可以使用 ncat 但我也宁愿避免这种情况。
我认为使用 fifo 队列可能是可能的,但我无法使其正常工作。
“我正在尝试做什么”部分
以我有限的语言能力,试图证明这些限制是具有挑战性的。但我的最终目标是使用 xinetd(但没有守护进程)的便利来维护我所有应用程序逻辑的主脚本。这样的主脚本可能有几十行,如下所示:
nc -l 8080 | get_person_name.sh | create_insert_statement.sh | sqlplus
nc -l 8081 | get_person_id.sh | create_select_statement.sh | sqlplus
Run Code Online (Sandbox Code Playgroud)
第二个将不起作用,因为它无法将输出返回给客户端。因此,我将问题减少到使用 netcat 实现回声服务器。我不想使用字符串,因为所有这些命令都是动态的,我只是不想处理额外的间接级别(首先,我的文本编辑器将没有那么有用的语法突出显示)。不过,我愿意接受此处的文档解决方案。
这做我想要的:
服务器:
mkfifo fifo
cat fifo | nc -k -l 4458 -v | cat > fifo
Run Code Online (Sandbox Code Playgroud)
客户:
echo "45" | nc localhost 4458
Run Code Online (Sandbox Code Playgroud)