得到了一个简单的脚本,可以对服务器执行命令 - 简要地说:
//Create shell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
//send commands
WshShell.SendKeys "telnet IP_ADDRESS"
WshShell.Sendkeys "dir"
服务器提供我想要捕获的反馈。我只需要将第一行捕获到一个变量中,然后打印该变量以确认。
你能帮我吗?谢谢。
得到了一个简单的脚本,可以对服务器执行命令 - 简要地说:
//Create shell
set WshShell=CreateObject("WScript.Shell")
WshShell.run "cmd.exe"
//send commands
WshShell.SendKeys "telnet IP_ADDRESS"
WshShell.Sendkeys "dir"
服务器提供我想要捕获的反馈。我只需要将第一行捕获到一个变量中,然后打印该变量以确认。
你能帮我吗?谢谢。
不要将 Windowstelnet
客户端用于自动化目的。telnet
Windows 附带的客户端仅供交互使用。
我会在批处理模式下使用plink
(来自PuTTY 套件):
plink.exe -telnet -batch IP_ADDRESS dir
该工具不需要安装,因此您只需将其与脚本一起部署即可。
使用head
/tail
在批处理文件中运行它,或者使用该方法在 VBScript 中运行它Exec
,这样您就可以从 StdOut 读取:
addr = "62.39.x.x"
port = 24
timeout = 300 'seconds
timedOut = False
cmdline = "echo ""mute near get"" | plink.exe -telnet -batch " & addr & " -P " & port
Set sh = CreateObject("WScript.Shell")
'change working directory to directory containing script and plink executable
Set fso = CreateObject("Scripting.FileSystemObject")
sh.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName)
'wait until command completes or timeout expires
expiration = DateAdd("s", timeout, Now)
Set cmd = sh.Exec("%COMSPEC% /c " & cmdline)
Do While cmd.Status = 0 And Now < expiration
WScript.Sleep 100
Loop
If cmd.Status = 0 Then
cmd.Terminate
timedOut = True
End If
WScript.Echo cmd.StdOut.ReadAll
If cmd.ExitCode <> 0 Then
WScript.Echo "Command terminated with exit code " & cmd.ExitCode & "."
WScript.Echo cmd.StdErr.ReadAll
WScript.Quit 1
ElseIf timedOut Then
WScript.Echo "Command timed out."
WScript.Echo cmd.StdErr.ReadAll
WScript.Quit 2
End If
这可能不是最好的方法,但对我有用:
Windows telnet 命令可以使用 -f 参数将输出保存在客户端。因此,您可以使用:
WshShell.SendKeys "telnet -f D:\output\telnet.out IP_ADDRESS"
在脚本的最后,只需处理 telnet.out 的内容