有时我想向 的输入发送一些文本netcat
。然后 Netcat 会将其发送到另一个 netcat 进程(在我的计算机上或本地网络上),但现在我只关心第一个。
例如,按下按键时,用户在提示中填写一个值;我想将该值发送到该进程。
给定值,比如说$text
,我如何发送它netcat
以便它接收它并像正常的标准输入一样对待它?
我尝试过以下方法,但都不起作用:
echo $text >> /proc/`pidof netcat`/fd/0
。
这会写入$text
终端,但 netcat 不会收到它。 (根据这个问题)- 我也尝试像这样启动netcat:并对进程
cat | netcat ...
进行回显cat
- 我也尝试像这样启动netcat:并对进程
mkfifo pipe; netcat <mypipe
mypipe
现在,当另一个 netcat 进程连接时,它会收到我到目前为止 发送的内容。
任何进一步的写入都mypipe
没有效果。- 我也尝试过
cat mypipe | netcat ...
这有不同的结果:第一次写入mypipe
被发送到另一个 netcat 进程,但第二次echo 123 >mypipe
尝试冻结 - 我没有收到提示,我可以输入值,但没有任何反应。
- 我也尝试过
由于我刚刚了解命名管道,我可能没有正确使用。
但寻找“流文件”或类似的告诉对我来说,它们是完成这项工作的正确工具(但不是如何)。
我第一次尝试的替代方案(我在服务器故障)是要使用的screen
,但我认为这对于我的问题来说太过分了。
命名管道的问题似乎是echo
在字符串之后发送 EOF 。反过来,netcat
停止从管道读取,因此我无法发送更多消息(我可以,但 netcat 不读取它们)。这让我将数据通过管道传输到进程的标准输入,之后不会导致 EOF,但我不知道如何将提供的解决方案应用于我的案例。
我想我涵盖了任何可能的管道/猫/回声组合,但没有结果,所以剩下的唯一的就是 unix.se :)
提前致谢!