ssh 之前的命令替换

ssh 之前的命令替换

我想将作业的结果写入集群中另一台主机上的远程文件中。我知道我可以这样做:

echo 'My text' | ssh [email protected] "cat >> ~/my.output"

这会将“我的文本”附加到远程文件。但是假设我在 上my.node,我想将此结果写入 上的文件my.host

echo "`hostname`:My text" | ssh [email protected] "cat >> ~/my.output"

我希望看到my.node:My text~/my.outputmy.host是这样的:my.host:My text

如何在命令hostname前获取替换的值ssh?可能吗?我也尝试过这个:

echo "$(hostname):My text" | ssh [email protected] "cat >> ~/test.output"

答案1

因此,您想要的是远程运行本地脚本。

当然,你也可以进行如下操作:

ssh [email protected] 'echo "$(hostname):My text" >> ~/test.output'

但您也可以将该代码移动到脚本文件并执行以下操作:

ssh [email protected] < myscript.sh

里面我的脚本

echo "$(hostname):My text" >> ~/test.output

如果你不想将 stdout 重定向放在脚本中,你可以在管道 ssh 客户端之前添加它。例如:

cat myscript.sh | sed '1iexec >> ~/test.output' | ssh [email protected]

这会将 stdout 重定向添加到脚本的第一行 ( 1i)。2i如果您有舍邦

相关内容