ssh管道命令错误

时间:2017-02-06 18:05:03

标签: linux ssh openssh

我在机器上运行

ssh root@lPServerHgl  cat /root/devops/giveAllArtifacts.txt | xargs -I {} sh -c "grep {} /ci/test.log;"

我得到grep:/ci/test.log:没有这样的文件或目录

但服务器上的命令(cat /root/devops/giveAllArtifacts.txt | xargs -I {} sh -c "grep {} /ci/test.log;")相同:lPServerHgl正常工作,没有任何错误。

P.S ssh连接没有任何问题。所有其他命令都在ssh上工作。管道命令似乎有些问题。

1 个答案:

答案 0 :(得分:1)

管道正在本地计算机上运行,​​而不是在远程服务器上运行。

ssh user@host remote-cmd [...args] | local-cmd [...args]
--------- runs in server --------- | --- runs locally ----

管道由您的 shell解释,而不是远程管道。要在ssh连接的另一端执行管道,您可以在那里调用shell。例如:

ssh user@host bash -c "'cat file.txt | grep foo'"

注意内部引号。这会将管道发送到另一台机器上的bash进程。

键入这些命令可能会很麻烦且容易出错。您可能希望在远程计算机上放置一个可立即运行的脚本,只需一个命令即可调用它。