在本地主机和远程主机上自动启动 netcat 并保持其处于活动状态

在本地主机和远程主机上自动启动 netcat 并保持其处于活动状态

我发现这个答案由 Stack Overflow 上的 @jeremytrimble 解释如何通过网络读取 FIFO 文件。

我想知道是否可以自动启动这些 netcat 命令,例如在 crontab 文件中 (@reboot nc ...)。我如何让它们保持活动状态或在它们被终止后重新启动它们?

Host1$ mkfifo Host1_named_pipe
Host1$ nc -l 1234 > Host1_named_pipe

Host2$ mkfifo Host2_named_pipe
Host2$ nc Host1 1234 < Host2_named_pipe

现在,当您在 Host2 上运行一个程序并将其输出发送到 Host2_named_pipe 时,该输出将从 Host1 上的 Host1_named_pipe 出来。

答案1

在始终连接的服务器上,在 crontab 中使用以下命令:

@reboot nc -k -l 1234 < /tmp/fifo.fifo

在不总是在网络上或开启的客户端上使用此命令:

nc -d $IP_OF_SERVER 1234 > /tmp/fifo.fifo & $SOME_COMMAND

服务器始终监听指定端口上的连接(感谢 -k 参数),客户端只在需要时才连接到服务器。

我将其用于 MPD 及其 FIFO 可视化工具。MPD 在远程主机上运行,​​但我的 MPD 客户端在本地运行(我使用 ncmpcpp)。

这是本地主机上 ncmpcpp 配置的重要部分:

mpd_host = "$IP_OF_SERVER"
visualizer_fifo_path = "/tmp/fifo.fifo"

这是远程服务器上 mpd 配置的重要部分:

audio_output {
        […]
        path    "/tmp/fifo.fifo"
        […]
}

在我的本地机器上运行“nc”命令似乎使用了非常大量的资源......大约占了我的 CPU 性能的 100%。

相关内容