gpt4 book ai didi

powershell - 来自 Windows 的 SSH 隧道作为后台进程?

转载 作者:行者123 更新时间:2023-12-04 04:16:05 25 4
gpt4 key购买 nike

在 Windows 服务器上,我们有一个到 MySQL 数据库的有效 OpenSSH SSH 隧道:

ssh -l <USER> -i <PUBLIC_KEY_FILE> -L 127.0.0.1:3306:localhost:3306 <SERVER_IP>

我们需要编写脚本:
  • 将隧道设置为后台进程
  • 在前台进程做一些事情,包括但不限于从数据库加载数据到本地Windows机器
  • 然后在前台工作完成后关闭后台 ssh 隧道/进程
    我们将如何做到这一点?

  • 使用 cmd/.bat,我们通过在单独的 cmd 中使用 start 启动 ssh 来实现前两点:
    https://docs.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

    然后我们可以做我们的东西部分,但是我们还没有想出如何关闭那个具体的隧道,而不杀死所有正在运行的 ssh.exe 进程。我们不想杀死他们所有人。
    有什么办法吗?

    然后我们在考虑 Powershell:
    Start-Job -Name "RUN_SSH_TUNNEL_X1" -ScriptBlock {ssh...
    ...stuff...
    Stop-Job -Name "RUN_SSH_TUNNEL_X1"

    但这似乎不起作用,作业“RUN_SSH_TUNNEL_X1”似乎在启动后立即停止,因此隧道不会停留。
    在我们的东西部分完成后,有什么方法可以保持工作正常运行并关闭它吗?

    还是应该用其他方法完成?注意!不想使用 Putty 等 3rd 方工具。

    最佳答案

    我们将隧道创建留在 bat 文件中。
    然后从 Powershell 检查 running tasks run 语句以检查 SSH 隧道是否已创建/正在运行。如果没有则调用隧道创建 bat 文件。
    工作完成后,调用相同的 SSH 隧道任务检查,如果正在运行,则终止该任务。

    关于powershell - 来自 Windows 的 SSH 隧道作为后台进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60670192/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com