SSH를 통해 로컬 파일에서 원격 스크립트 실행

SSH를 통해 로컬 파일에서 원격 스크립트 실행

여러 인수와 텍스트 파일을 허용하는 Linux 바이너리가 있는 원격 시스템이 있습니다. 프로그램의 출력은 내가 항상 텍스트 파일에 쓰는 stdout에 기록됩니다. 나는 데이터 파일을 원격 컴퓨터에 복사하고, 해당 파일에 대해 명령을 실행하고, 결과 파일을 다시 복사하는 것을 발견했습니다. 이는 시간이 많이 걸리고 오류가 발생하기 쉽습니다.

SSH 및 표준 Linux 도구를 사용하면 먼저 원격 시스템에 복사하지 않고도 로컬 파일에서 SSH를 통해 원격 바이너리를 실행할 수 있습니까?

이상적으로는 내 로컬 컴퓨터에 bash 스크립트를 갖고 싶습니다. 데이터 파일을 인수로 지정하면 모든 SSH 연결, 데이터 전송 등을 수행하고 결과를 stdout에 로컬로 출력합니다.

내 로컬 컴퓨터는 Mac OS X이고 원격 컴퓨터는 Linux입니다. 아니요, Linux 바이너리를 Mac OS X에서 작동시킬 수 없습니다.

업데이트: 원격 시스템의 도구~할 수 있다stdin에서 읽습니다.

답변1

도구가 stdin을 읽을 수 있는 경우대신에텍스트 파일을 만들고 stdout을 통해 출력을 제공하는 경우 이 bash구문은 파일을 복사할 필요 없이 원격으로 실행해야 합니다.

< "/local_path/to/input_file" ssh user@remote 'the_tool -some_option1 -option2'

-참고: 일부 명령에는 stdin을 읽으려면 특수 옵션이나 인수(예: )가 필요합니다 . 일부는 지정된 입력 파일이 없는 동안 stdin을 읽습니다. 나는 귀하의 도구에 대해 아무것도 모르므로 이것은 조정이 필요할 수 있는 일반적인 접근 방식입니다.

>또는 (local)을 사용하여 출력을 로컬 파일로 리디렉션하는 것도 tee작동합니다.

< "/local_path/to/input_file" ssh user@remote 'the_tool -some_option1 -option2' | tee "/local_path/to/output_file"

예: 원격은 cat로컬과 원격을 연결합니다 /etc/hosts.

< "/etc/hosts" ssh user@remote 'cat - /etc/hosts'

관련 정보