使用命名管道 (FIFO) 作为远程命令执行的接口是个好主意吗?

使用命名管道 (FIFO) 作为远程命令执行的接口是个好主意吗?

上下文:我想从文本编辑器在远程计算机上运行命令。

我所说的“远程命令执行”是指在某个地方运行 shell 命令:虚拟机、SSH 服务器、容器、TCP 上的 shell、任何带有 shell 的远程计算机。

我所说的“界面”是指向用户隐藏详细信息的目标。用户只需要在某处写入命令并在某处读取其输出。

我正在考虑将其设置如下:

mkfifo /tmp/f
mkfifo /tmp/g

while true; do
    cat /tmp/f | ssh -J srv1 srv2 /bin/sh >/tmp/g

    echo ping
done

用户向 发送命令/tmp/f,然后从中读取命令的输出/tmp/g

它确实有效,但这真的是一个好的解决方案吗?传统上如何解决这个任务?

总的来说,我觉得很好:

  • 假设脏工作(超时、日志记录、重新启动策略、配置)以某种方式处理。

  • 界面不需要变得更加复杂。我不想包含 stdout/stderr 区别、错误消息、创建/销毁请求等。

相关内容