Bash

如何將一些文本寫入不同機器中的文件

  • November 13, 2018

我有 2 台機器 machine1 和 machine2。

我想從 machine1 將一些內容寫入 machine2 中的文件。

在同一台機器上,我可以執行sudo cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys將內容~/.ssh/id_dsa.pub寫入~/.ssh/authorized_keys文件。

但我想將~/.ssh/id_dsa.pubmachine1 的內容放入~/.ssh/authorized_keysmachine2 中的文件中。我可以做 ssh 並做到這一點。因為我在使用使用者名和密碼的單個命令中以靜默模式安裝 hadoop。

我不想scp替換整個文件。

如何在提供另一台機器的使用者名/密碼的單個命令中執行此操作。

你可以這樣做:

cat ~/.ssh/id_dsa.pub | ssh machine2 'cat >> ~/.ssh/authorized_keys'

但是您可能應該ssh-copy-id改用它,這是用於該確切目的的工具:

ssh-copy-id machine2

或者

ssh-copy-id id_dsa machine2

ssh 命令擷取本地標準輸入,也可以執行外部命令。如果將這兩個事實結合起來,那麼這將成為可能:

ssh machine2 tee -a "~/.ssh/authorized_keys" < ~/.ssh/id_dsa.pub

還有一個名為ssh-copy-id旨在自動化此過程的命令。您可以查看man ssh-copy-id更多資訊。

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