通过多层ssh在远程计算机上运行命令的正确方法是什么

时间:2017-07-11 09:31:54

标签: bash ssh

假设有3台机器:'本地','A'和'B'。仅连接“本地”和“A”,并且连接“A”和“B”。 'local'希望通过A在B上运行命令。

# I run ssh A "ssh B commands" frequently, so a function is created for have clearer code.
run_on_B() {
  ssh A "ssh B \"$@\""
}

run_on_B 'echo export PATH=\\\$HOME/bin:\\\$PATH >> \$HOME/.bash_profile'

有没有更好的方法通过ssh在远程计算机上运行命令?我觉得在这里逃避$HOME$PATH很容易出错。

1 个答案:

答案 0 :(得分:1)

问题不是关于运行远程命令,而是关于引用和多级解析。因为该命令用于生成脚本文件。

如果要附加到.bash_profile的最终命令,可以是

export PATH="$HOME/bin:$PATH"

追加文件的命令

echo 'export PATH="$HOME/bin:$PATH"' >> "$HOME"/.bash_profile

以文字形式传递出去并逃避单引号'

run_on_B 'echo '\''export PATH="$HOME/bin:$PATH"'\'' >> "$HOME"/.bash_profile'

但是可以重写功能

run_on_B() {
    ssh A 'ssh B '\'"$1"\'
}