【发布时间】:2021-06-07 21:38:05
【问题描述】:
我有两个 shell 脚本,如下所示:
脚本1:
ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null my_username@jump_box <<EOF
ls
ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null actual_host <<EOF1
sudo docker ps --format='{{json .}}'
EOF1
EOF
脚本2:
details=nothing
ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null my_username@jump_box <<EOF
ls
details=$(ssh -q -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null actual_host "sudo docker ps --format='{{json .}}'")
EOF
echo "${details}"
我需要本地机器的变量中的 docker 详细信息,以便我可以对其进行一些操作。第一个脚本运行良好,我可以在本地机器上看到 docker 命令的输出,但第二个脚本不起作用。它似乎被挂起/卡住了,什么也没做,我必须强行退出它。
【问题讨论】:
-
Script2 不起作用,因为
$( )表达式在本地计算机上运行(它在跳转框而不是本地计算机上设置details)。你真的需要在跳转框上运行ls吗?使用ssh -J my_username@jump_box ...会简化这个吗? -
@GordonDavisson 不,'ls' 只是为了一些测试目的。我不需要它。将尝试多跳选项,谢谢。