Bash 通过多层ssh在远程机器上运行命令的正确方法是什么
假设有3台机器:“本地”、“A”和“B”。仅连接“本地”和“A”,且连接“A”和“B”。“本地”希望通过A在B上运行命令Bash 通过多层ssh在远程机器上运行命令的正确方法是什么,bash,ssh,Bash,Ssh,假设有3台机器:“本地”、“A”和“B”。仅连接“本地”和“A”,且连接“A”和“B”。“本地”希望通过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 >> \
# 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很容易出错。问题不在于运行远程命令,而在于引用和多级解析。因为该命令用于生成脚本文件 如果要附加到.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"\'
}