繁体   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