用于将 stdin/stdout 从一台计算机上的应用程序中继到另一台计算机上的同一应用程序的 Shell 脚本

用于将 stdin/stdout 从一台计算机上的应用程序中继到另一台计算机上的同一应用程序的 Shell 脚本

该应用程序,将其命名为“去引擎1' 是一个通过神经网络运行的围棋游戏引擎。它真的很强大,我想在我的网络上的不同机器上对其进行基准测试。它旨在与充当 Go 引擎服务器的 Go 客户端(例如 Sabaki 或 GoGui)一起使用。 Go 客户端可以配置为运行两个本地 Go 引擎(例如go-engine-1 与 go-engine-2)彼此对抗。就我而言,我希望第二个引擎在不同的机器上运行。该应用程序使用“Go Text Protocol”(简称 gtp)向 Go 客户端发送/接收基于文本的 stdin/stdout。 Go 客户端不够智能,无法直接使用第二个引擎的 shell 命令(如 ssh)进行配置。 Gtp 确实很笨,但 Go 引擎足够智能(使用 gtp 作为命令行参数),可以使用 ssh 远程向 shell 发送/接收 I/O。我需要基于网络的 Go 引擎(脚本)的 I/O 来与 Go 客户端进行通信,就像它是一个独立的本地 Go 引擎一样。

我想我可以使用 netcat [/usr/bin/nc] 结合 ssh 为第二个引擎创建基于 shell 的脚本。正如您可能猜测的那样,这超出了我的专业范围。该脚本必须是独立的,并且在 Go 客户端看来是本地 Go 引擎。因此,端口、IP 地址或用户帐户的任何设置都必须在 shell 脚本内设置或从配置文件中引用。我已经使用 ssh 密钥配置了两台计算机,因此在登录或远程发送命令时不必向任何一台计算机发送凭据。如果需要,我可以提前在任一 (Linux) 计算机上设置或配置端口,因为我在两台计算机上都拥有 root 权限。

我对此进行了修改,并尝试了类似下面的脚本,但没有成功。我在这里看到过类似的帖子,所以我必须相信这是可能的,并且通过正确的专业知识可以轻松实现。 TIA--wirelesstvmc

#!/bin/sh

#/usr/bin/nc 远程机器 22 | /usr/bin/ssh -t user1@remotemachine goengine-2 gtp /usr/bin/ssh -f -L 9001:127.0.0.1:9000 user1@remotemachine sleep 10 /usr/bin/nc 127.0.0.1 9001 | goengine-1 gtp

相关内容