我试图通过多个SSH执行多个命令,基本上:
ssh -t host1 ssh -t host2 ssh -t host3'cmd1; CMD2; CMD3'
我想执行最终主机(host3)上的所有命令。 但是,如果我使用上面的行,会发生什么情况是,在“cmd1;”之后立即closures与host3和host2的连接。
例如,如果我使用cmd1,cmd2和cmd3的主机名,输出将是
主机3
连接到host3closures。
连接到host2closures。
主机1
主机1
连接到host1closures。
如果我以下面的方式使用双引号
ssh -t host1“ssh -t host2 ssh -t host3'cmd1; cmd2; cmd3'”
要么
ssh -t host1 ssh -t host2“ssh -t host3'cmd1; cmd2; cmd3'”
我得到的输出:
主机3
连接到host3closures。
主机2
主机2
连接到host2closures。
连接到host1closures。
有人可以向我解释这个吗? 以及如何获得在host3上执行的所有命令
所需要的是大量的报价:
ssh -t host1 'ssh -t host2 "ssh -t host3 '"'"'cmd1; cmd2; cmd3'"'"'"'
我在这里做的只是把你的最后一个命令,并添加'周围。 但是其他的东西需要相应的调整。 任何以前存在的'放在我所放的部分内'都需要用'"'"'replace
取而代之的原因是:
'终止引用的string。 "开始引用一个新的string" '不被shell解释,它只是被当作文字来对待。 "结尾string引用" '开始一个新的引用string。