Pipe

我可以將一台伺服器上的標準輸出通過管道傳輸到另一台伺服器上的標準輸入嗎?

  • December 8, 2021

stdout在一台 CentOS 伺服器上需要通過管道傳送到stdin另一台 CentOS 伺服器上。這可能嗎?

更新

ScottPack、MikeyB 和 jofel 都有有效的答案。我將答案授予 Scott 是因為,即使我的問題沒有將安全性指定為要求,但安全總是很好的。但是,另外兩個研究員的建議也將起作用。

這是一個毫不掩飾的肯定。

當一個人用來ssh在遠端伺服器上執行命令時,它會執行某種花哨的內部輸入/輸出重定向。事實上,我發現這是 OpenSSH 微妙的更好的特性之一。具體來說,如果您用於ssh在遠端系統上執行任意命令,那麼 ssh 將映射STDINSTDOUT正在執行的命令的命令。

出於範例的目的,假設您要創建備份 tarball,但不想或不能將其儲存在本地。讓我們看看這個語法:

$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"

我們正在創建一個 tarball,並將其寫入STDOUT普通文件。由於我們使用 ssh 執行遠端命令,因此 STDIN 被映射STDINcat. 然後我們將其重定向到一個文件。

引用自:https://unix.stackexchange.com/questions/34273