我想将作业的结果写入集群中另一台主机上的远程文件中。我知道我可以这样做:
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.output
my.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
如果您有舍邦。