命令行putty.exe SSH连接捕获输出

时间:2018-01-29 06:31:15

标签: ssh vbscript putty

我正在从Windows机器上自动ssh登录到Linux服务器。它是通过putty.exe客户端完成的。

Const WshRunning = 0
Dim UserName
Dim Passwrd

IP = "192.20.30.40"
UserName = "someuser"
Passwrd  = "somepass"

Set shell = WScript.CreateObject("WScript.Shell")
pcmd = "putty.exe -ssh" & " " & UserName & "@" & IP & " -pw" & " " & Passwrd & " -m ""commands.txt"""

Set exec = shell.Exec(pcmd)

Do While exec.Status = WshRunning
     WScript.Sleep 100 
Loop

Set pout = exec.StdOut
strOutput = exec.StdOut.ReadAll()

WScript.StdOut.Write(strOutput)
WScript.Echo(strOutput)  

但我无法获得在Linux服务器上执行的命令输出。如何在VBScript变量中获得这些Linux命令的输出?

有关Plink工具的一些建议。但它不允许基于自动密码的ssh。

1 个答案:

答案 0 :(得分:0)

putty.exe是一个GUI应用程序。它旨在交互式使用,而不是用于自动化。尝试重定向其标准输出是没有意义的,因为它没有使用它。

对于自动化,请使用PuTTY包中的另一个工具plink.exe。 Plink是一个控制台应用程序,因此您可以读取其标准输出。 Plink可以使用与PuTTY相同的命令行参数集。除此之外,您还可以指定要在其命令行上直接执行的命令,而不是使用单独的命令文件(使用-m开关)。

您声称已经尝试过Plink但它无效。这听起来不太可能。 Plink在内部与PuTTY相同。如果您对Plink有疑问,您必须向我们提供更多详细信息。告诉我们您尝试了什么以及该尝试的一些日志。