多个 winform 中的 SSH .NET 会话处理
本文关键字:会话 处理 NET SSH winform 中的 多个 | 更新日期: 2023-09-27 18:33:59
我创建了一个桌面应用程序。应用程序使用 ssh .net 库连接到"solaris"服务器,并根据用户的选择运行作业和实用程序。实用程序和作业在服务器中用 perl 和 c++ 编码。我现在正在做的是:- 我有一个登录表单,它采用用户凭据并尝试与服务器建立连接。如果连接成功,它将关闭 ssh 会话并转到另一个窗体,其中包含要运行的实用程序和作业列表。无论用户选择运行什么作业/实用程序,应用程序都会将其转换为相应的形式。用户输入所需的数据并运行实用程序。现在,我的应用程序再次创建与同一"solaris"服务器的连接,然后在那里运行作业。作业完成后,连接将自动关闭。
问题是,用户可能需要同时运行多个不同的作业,对于每个作业,每次都会构建一个单独的连接,并且作业将单独运行。除了连接所需的额外时间外,它还意味着与服务器的多个打开连接。
问题 :- 由于我已经在登录表单中获取用户凭据并连接到同一服务器以验证连接,因此在应用程序关闭之前,我是否可以继续使用相同的连接。这样,我就不需要为每个单独的工作单独连接,并且可以节省大量时间。
我尝试了一些非常愚蠢的事情,例如将 SshClient 对象传递给每个作业的被调用表单的构造函数,但它不起作用。我试图将其作为 ref 传递,但 ref 不起作用并抛出错误。谁能告诉我怎么做?
SSH基本上将您连接到远程机器的命令行(或shell(。在 SSH 中,您可以一次执行多个命令,等待一个命令完成后再启动另一个命令,也可以并行运行多个命令。在此处查看更多信息:https://unix.stackexchange.com/questions/63648/how-to-send-many-commands-to-shell-and-wait-for-the-command-behind-ends
我认为最好的办法是在 Solaris 端使用此解决方案,而不是尝试制作 C# 解决方案。您可以通过SSH登录,并且需要运行多个命令 - 该功能已经存在于SSH(或BASH(中。