有一个简单的脚本,执行命令的服务器 - 简述:
//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"
服务器提供我想捕捉反馈。 我只需要拍摄第一线到一个变量,然后只需打印出变量来确认。
你能帮我吗? 谢谢。
不要使用Windows telnet
客户端自动化的目的。 该telnet
客户端随Windows是仅用于交互使用的正确性。
我会用plink
(从腻子套件在批处理模式下)这个:
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的内容