从 VB.Net 运行 Putty

问题描述 投票:0回答:1

我正在VB.NET中制作一个程序,可以让你启动putty,自动登录并自动执行命令。

到目前为止,我已经按照以下说明成功打开了 putty,我不知道它是否正确,但它有效。

Process.Start("C:\Program Files\PuTTY\putty.exe", "-ssh [email protected] 22 -pw admin)

但是当连接到新服务器时,putty 会弹出一个确认窗口。 我已设法跳过该确认窗口,但应用了延迟

        Threading.Thread.Sleep("500")
        SendKeys.Send("{RIGHT}")
        SendKeys.Send("{RIGHT}")
        SendKeys.Send("{ENTER}")
        Threading.Thread.Sleep("1000")
        SendKeys.Send("admin")
        SendKeys.Send("{ENTER}")
        SendKeys.Send("admin")
        SendKeys.Send("{ENTER}")

这样我就可以向 Putty 发送命令 当我必须发送命令来重新启动服务器,然后重新登录并继续执行命令时,就会出现问题。 例如,第一次重新启动之前有 10 个命令,重新启动后有 15 个命令。

如您所见,为了执行命令,我使用 sleep() 来防止它以光速执行。

到目前为止,我还没有设法让 VB.NET 了解服务器正在重新启动并等待 X 时间重新登录并继续发送命令,因为重新启动时间是可变的。

另一方面,在执行某些命令之前使用 sleep() 在我看来并不是一个好的做法,我发现在某些情况下它可以工作,而在其他情况下则不能,并且会在 Putty 中生成错误。

最后我的代码保持这样......

        Process.Start("C:\Program Files\PuTTY\putty.exe", "-ssh [email protected]  22 -pw admin")
        Threading.Thread.Sleep("500")
        SendKeys.Send("{RIGHT}")
        SendKeys.Send("{RIGHT}")
        SendKeys.Send("{ENTER}")
        Threading.Thread.Sleep("1000")
        SendKeys.Send("admin")
        SendKeys.Send("{ENTER}")
        SendKeys.Send("admin")
        SendKeys.Send("{ENTER}")
        Threading.Thread.Sleep("1000")
        SendKeys.Send("ping 192.168.1.34 count 20")
        SendKeys.Send("{ENTER}")

对,我用来跳过连接到新服务器时 PUTTY 启动的确认窗口。

如果您能评论我是否使用正确的方法在 Putty mendiante VB.NET 中打开 SSH 会话以及如何发送命令,我将不胜感激。

vb.net networking putty
1个回答
0
投票

为什么要启动 putty 而不是 plink? plink 就是为此设计的,而 putty 不是。

© www.soinside.com 2019 - 2024. All rights reserved.