簡體   English   中英

通過SSH傳輸文件,然后附加到另一個文件

[英]Transfer files over SSH, then appended to another file

我正在嘗試自動化一個腳本,該腳本將文件從本地服務器復制到命令行上的遠程服務器。 我已經完成了對scp的研究並知道如何將文件復制到遠程服務器,但后來我想將該文件附加到另一個文件。

這是我的代碼:

scp ~/file.txt user@host:
ssh user@host cat file.txt >> other_file.txt

當我手動將所有內容輸入命令行時,一切正常:

scp ~/file.txt user@host:
ssh user@host
cat file.txt >> other_file.txt

但是當我運行腳本時,只復制文件,而不是附加到other_file.txt的末尾。 救命?

你的代碼的第二行應該是

ssh user@host "cat file.txt >> other_file.txt"

三個要點:

  1. 你不希望你的本地 shell以任何方式解釋>> (如果它沒有引用它會這樣做)
  2. 一個遠程shell會解釋>>在命令正確。
  3. ssh最終參數被“加入”以形成一個命令,而不是像它們一樣被帶入argv數組。 這可能是方便,但它也可能導致混亂或錯誤: ssh cat "$MYFILE"ssh "cat '$MYFILE'"在普通的使用情況下,兩個工作 ,但他們歇的不同$MYFILE

您需要將要在遠程主機上運行的命令括在引號中。 否則,重定向是在本地完成而不是遠程完成。 試試這個:

scp ~/file.txt user@host:
ssh user@host 'cat file.txt >> other_file.txt'

嘗試這個:

  $ cat file.txt| ssh hostname 'cat >> other_file.txt'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM