透過 SSH 在本機檔案上執行遠端腳本

透過 SSH 在本機檔案上執行遠端腳本

我有一台帶有 Linux 二進位檔案的遠端計算機,它接受多個參數和一個文字檔案。程式的輸出被寫入標準輸出,我總是將其寫入文字檔案。我發現自己將資料檔案複製到遠端計算機,在該檔案上執行命令並將結果檔案複製回來。這是耗時且容易出錯的。

是否可以使用 SSH 和標準 Linux 工具透過 SSH 在本機檔案上執行遠端二進位文件,而無需先將其複製到遠端電腦?

理想情況下,我希望在本機電腦上有一個 bash 腳本。我指定資料檔案作為參數,它執行所有 SSH 連線、資料傳送等,並將結果輸出到本機 stdout。

我的本機是Mac OS X,遠端機器是Linux。不,我無法讓 Linux 二進位檔案在 Mac OS X 上運行。

更新:遠端機器上的工具從標準輸入讀取。

答案1

如果該工具可以讀取標準輸入代替一個文字檔案並透過 stdout 提供其輸出,此bash語法應該遠端運行它,而不需要複製任何檔案:

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

注意:某些命令需要特殊選項或參數(例如-)才能讀取 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'

相關內容