use*_*950 6 ssh powershell cmd openssh
在 Windows 服务器上,我们有一个到 MySQL 数据库的工作 OpenSSH SSH 隧道:
ssh -l <USER> -i <PUBLIC_KEY_FILE> -L 127.0.0.1:3306:localhost:3306 <SERVER_IP>
Run Code Online (Sandbox Code Playgroud)
我们需要编写它的脚本:
使用 cmd/.bat,我们通过在单独的 cmd 中启动 ssh 来实现前两点:https: //learn.microsoft.com/en-us/windows-server/administration/windows-commands/start
START ssh -l <USER> -i <PUBLIC_KEY_FILE> -L 127.0.0.1:3306:localhost:3306 <SERVER_IP> -T
Run Code Online (Sandbox Code Playgroud)
然后我们可以完成我们的工作,但我们还没有弄清楚如何关闭该具体隧道,而不杀死所有正在运行的 ssh.exe 进程。我们不想杀死他们所有人。有什么办法吗?
然后我们想到了 Powershell:
Start-Job -Name "RUN_SSH_TUNNEL_X1" -ScriptBlock {ssh...
...stuff...
Stop-Job -Name "RUN_SSH_TUNNEL_X1"
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,作业“RUN_SSH_TUNNEL_X1”似乎在启动后立即停止,因此隧道不会保持运行。有什么方法可以让工作继续运行并在我们的工作完成后关闭它吗?
或者应该用其他方法来完成?注意!不想使用 Putty 等第三方工具。
我们将隧道创建保留在 bat 文件中。
然后从 Powershell 检查正在运行的任务运行语句以检查 SSH 隧道是否已创建/正在运行。如果没有则调用隧道创建bat 文件。
一旦工作完成,就会调用相同的 SSH 隧道任务检查,如果正在运行,则终止该任务。
| 归档时间: |
|
| 查看次数: |
5596 次 |
| 最近记录: |