有时写入正在运行的进程的标准输入

有时写入正在运行的进程的标准输入

有时我想向 的输入发送一些文本netcat。然后 Netcat 会将其发送到另一个 netcat 进程(在我的计算机上或本地网络上),但现在我只关心第一个。

例如,按下按键时,用户在提示中填写一个值;我想将该值发送到该进程。


给定值,比如说$text我如何发送它netcat以便它接收它并像正常的标准输入一样对待它?


我尝试过以下方法,但都不起作用:

  • echo $text >> /proc/`pidof netcat`/fd/0
    这会写入$text终端,但 netcat 不会收到它。 (根据这个问题

    • 我也尝试像这样启动netcat:并对进程cat | netcat ...进行回显cat
  • mkfifo pipe; netcat <mypipe
    mypipe现在,当另一个 netcat 进程连接时,它会收到我到目前为止 发送的内容。
    任何进一步的写入都mypipe没有效果。

    • 我也尝试过cat mypipe | netcat ...
      这有不同的结果:第一次写入mypipe被发送到另一个 netcat 进程,但第二次echo 123 >mypipe尝试冻结 - 我没有收到提示,我可以输入值,但没有任何反应。

由于我刚刚了解命名管道,我可能没有正确使用。
但寻找“流文件”或类似的告诉对我来说,它们是完成这项工作的正确工具(但不是如何)。

我第一次尝试的替代方案(我在服务器故障)是要使用的screen,但我认为这对于我的问题来说太过分了。

命名管道的问题似乎是echo在字符串之后发送 EOF 。反过来,netcat停止从管道读取,因此我无法发送更多消息(我可以,但 netcat 不读取它们)。这让我将数据通过管道传输到进程的标准输入,之后不会导致 EOF,但我不知道如何将提供的解决方案应用于我的案例。

我想我涵盖了任何可能的管道/猫/回声组合,但没有结果,所以剩下的唯一的就是 unix.se :)

提前致谢!

相关内容