한 컴퓨터의 응용 프로그램에서 다른 컴퓨터의 동일한 응용 프로그램으로 stdin/stdout을 릴레이하기 위한 쉘 스크립트

한 컴퓨터의 응용 프로그램에서 다른 컴퓨터의 동일한 응용 프로그램으로 stdin/stdout을 릴레이하기 위한 쉘 스크립트

애플리케이션 이름을 "엔진 1로 이동'는 신경망을 통해 실행되는 바둑 게임 엔진입니다. 정말 강력하며 내 네트워크의 다른 컴퓨터에서 벤치마킹하고 싶습니다. Go 엔진 서버 역할을 하는 Go 클라이언트(예: Sabaki 또는 GoGui)와 함께 사용하기 위한 것입니다. Go 클라이언트는 두 개의 로컬 Go 엔진(예:go-engine-1 및 go-engine-2) 서로 반대합니다. 내 경우에는 두 번째 엔진이 다른 시스템에서 실행되기를 원합니다. 애플리케이션은 "Go 텍스트 프로토콜"(줄여서 gtp)을 사용하여 텍스트 기반 stdin/stdout을 Go 클라이언트에 보내고 받습니다. Go 클라이언트는 두 번째 엔진의 셸 명령(예: ssh)을 사용하여 직접 구성할 만큼 똑똑하지 않습니다. Gtp는 정말 멍청하지만 Go 엔진은 ssh를 사용하여 원격으로 쉘에 I/O를 보내고 받을 수 있을 만큼 똑똑합니다(gtp를 명령줄 인수로 사용). 마치 독립형 로컬 Go 엔진인 것처럼 Go 클라이언트와 통신하려면 Go 엔진(스크립트)의 네트워크 기반 I/O가 필요합니다.

나는 두 번째 엔진을 위한 쉘 기반 스크립트를 생성하기 위해 ssh와 결합된 netcat [/usr/bin/nc]를 사용할 수 있다고 생각했습니다. 짐작할 수 있듯이 이것은 내 전문 지식을 넘어서는 것입니다. 스크립트는 자체 포함되어야 하며 Go 클라이언트에 Go 엔진의 기본으로 표시되어야 합니다. 따라서 포트, IP 주소 또는 사용자 계정에 대한 모든 설정은 셸 스크립트 내에서 설정하거나 구성 파일에서 참조해야 합니다. SSH 키로 두 시스템을 모두 구성했으므로 원격으로 로그인하거나 명령을 보낼 때 두 시스템 모두에 자격 증명을 보낼 필요가 없습니다. 필요한 경우 두 컴퓨터 모두에 루트 액세스 권한이 있으므로 미리 두 컴퓨터 중 하나(Linux)에서 포트를 설정하거나 구성할 수 있습니다.

나는 이것을 수정하고 성공하지 못한 채 아래와 같은 스크립트를 시도했습니다. 여기에서 비슷한 게시물을 보았으므로 적절한 전문 지식을 갖춘다면 이것이 가능하고 쉽게 달성할 수 있다고 믿어야 합니다. 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 |

관련 정보