SSH 里面的 SSH heredoc
SSH inside SSH heredoc
我正在编写一个脚本,通过 SSH 登录到远程服务器并执行一些命令,其中一个通过 SSH 登录到第二个远程服务器(我无法在本地访问)并执行命令。在那个嵌套的 SSH 命令之后,我原来的 SSH 命令终止并且没有完成 heredoc 的其余部分。我稍微简化了脚本,但得到了相同的结果:
#!/bin/bash
ssh server1 <<'EOF'
echo one $HOSTNAME
ssh server2 'echo two $HOSTNAME'
echo three $HOSTNAME
EOF
我的输出如下所示:
one server1
two server2
我希望在输出的末尾看到 three server1
,但它并没有发生。我能够将它们分成两个 SSH 命令并获得我需要的东西,但我很好奇为什么会这样,是否有可能一次获得我期望的东西?
替换
ssh server2
和
ssh -n server2
防止 ssh 从 stdin 读取。
我正在编写一个脚本,通过 SSH 登录到远程服务器并执行一些命令,其中一个通过 SSH 登录到第二个远程服务器(我无法在本地访问)并执行命令。在那个嵌套的 SSH 命令之后,我原来的 SSH 命令终止并且没有完成 heredoc 的其余部分。我稍微简化了脚本,但得到了相同的结果:
#!/bin/bash
ssh server1 <<'EOF'
echo one $HOSTNAME
ssh server2 'echo two $HOSTNAME'
echo three $HOSTNAME
EOF
我的输出如下所示:
one server1
two server2
我希望在输出的末尾看到 three server1
,但它并没有发生。我能够将它们分成两个 SSH 命令并获得我需要的东西,但我很好奇为什么会这样,是否有可能一次获得我期望的东西?
替换
ssh server2
和
ssh -n server2
防止 ssh 从 stdin 读取。