我在机器上运行
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上工作。管道命令似乎有些问题。
答案 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
进程。
键入这些命令可能会很麻烦且容易出错。您可能希望在远程计算机上放置一个可立即运行的脚本,只需一个命令即可调用它。