Pipe
我可以將一台伺服器上的標準輸出通過管道傳輸到另一台伺服器上的標準輸入嗎?
stdout
在一台 CentOS 伺服器上需要通過管道傳送到stdin
另一台 CentOS 伺服器上。這可能嗎?更新
ScottPack、MikeyB 和 jofel 都有有效的答案。我將答案授予 Scott 是因為,即使我的問題沒有將安全性指定為要求,但安全總是很好的。但是,另外兩個研究員的建議也將起作用。
這是一個毫不掩飾的肯定。
當一個人用來
ssh
在遠端伺服器上執行命令時,它會執行某種花哨的內部輸入/輸出重定向。事實上,我發現這是 OpenSSH 微妙的更好的特性之一。具體來說,如果您用於ssh
在遠端系統上執行任意命令,那麼 ssh 將映射STDIN
到STDOUT
正在執行的命令的命令。出於範例的目的,假設您要創建備份 tarball,但不想或不能將其儲存在本地。讓我們看看這個語法:
$ tar -cf - /path/to/backup/dir | ssh remotehost "cat - > backupfile.tar"
我們正在創建一個 tarball,並將其寫入
STDOUT
普通文件。由於我們使用 ssh 執行遠端命令,因此 STDIN 被映射STDIN
到cat
. 然後我們將其重定向到一個文件。