假设有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
很容易出错。
答案 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"\'
}