Bash
如何將一些文本寫入不同機器中的文件
我有 2 台機器 machine1 和 machine2。
我想從 machine1 將一些內容寫入 machine2 中的文件。
在同一台機器上,我可以執行
sudo cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
將內容~/.ssh/id_dsa.pub
寫入~/.ssh/authorized_keys
文件。但我想將
~/.ssh/id_dsa.pub
machine1 的內容放入~/.ssh/authorized_keys
machine2 中的文件中。我可以做 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
更多資訊。