Sup*_*net 2 linux ssh script ubuntu
我有一个脚本文件./run_app.sh
,其中包含以下内容:
ssh -L 8888:localhost:8888 ubuntu@address
./run_website.sh # it should be executed locally
Run Code Online (Sandbox Code Playgroud)
但它试图在远程机器上运行第二行。实际上,我想在我的电脑上运行它。任何的想法?
您好,欢迎使用超级用户。
之后ssh -L 8888:localhost:8888 ubuntu@address
,您的脚本会在远程服务器上找到自己。
您可以将标志传递-fN
给ssh
(-f
用于fork 到后台并且-N
不运行命令)。
然后,在隧道建立后,您的脚本将在您机器的下一行继续执行。
缺点是即使脚本完成后ssh
连接仍将保留在后台。
解决方法是放弃-N
标志并sleep 10
在远程服务器上执行:
ssh -f -L 8888:localhost:8888 ubuntu@address sleep 10
Run Code Online (Sandbox Code Playgroud)
这样,如果没有使用隧道,无论是在run_website.sh
终止时还是在 10 秒后脚本不使用隧道(即由于某种原因失败),它将自动断开连接。
这显然假设run_website.sh
使用隧道。
如果您不关心自动终止隧道,请继续并简单地使用-fN
:
ssh -fN -L 8888:localhost:8888 ubuntu@address
Run Code Online (Sandbox Code Playgroud)
ssh
如果需要,您可以稍后终止该进程。