终止telnet会话然后启动另一个会话?

时间:2013-06-20 15:42:56

标签: batch-file vbscript cmd telnet

我正在编写一个脚本,循环遍历大量IP地址,每个telnet,发送登录信息,然后发送命令退出。然后它检查日志文件中是否有某个字符串,如果该字符串被包含,则输出“它是一个UPS!”如果不包含字符串,则为“非UPS”。截至目前,该脚本对一个小错误执行精美的execpt,我无法让telnet会话返回到下一次迭代的命令提示符。如果我在telnet会话断开连接后按下回车键(或任何键),脚本将继续进行下一次迭代,但我似乎无法让脚本自动发送该键击。这是代码:

脚本入口点:

@echo off
FOR %%i IN (10.40.9.131 10.40.1.205) DO logtest.bat %%i

logtest.bat:

@echo off

cscript SendKeys.vbs

telnet %1 -f diditwork.txt


find /c "User" diditwork.txt
if errorlevel 1 goto notfound
echo Tis a UPS
goto done
:notfound
echo not a ups
goto done
:done

SendKeys.vbs:

set OBJECT=WScript.CreateObject("WScript.Shell")
WScript.sleep 100 
OBJECT.SendKeys "apc{ENTER}" 
WScript.sleep 50 
OBJECT.SendKeys "apc{ENTER}"
WScript.sleep 50  
OBJECT.SendKeys "4{ENTER}"
WScript.sleep 50 
OBJECT.SendKeys "quit{ENTER}"
WScript.sleep 50

OBJECT.SendKeys "{ENTER}"
WScript.sleep 50

4 个答案:

答案 0 :(得分:0)

尝试使用telnet open close 等命令

telnet

for each address
  open x.x.x.x
  do stuff
  close

quit

答案 1 :(得分:0)

如果您想批量运行telnet脚本,我建议使用PuTTY(或者更具体地说,plink)。

答案 2 :(得分:0)

Google就此而言,为Windows提供了一个可编写脚本的telnet工具。

Telnet Scripting Tool v.1.0
作者:Albert Yale ay@aci.qc.ca http://ay.home.ml.org/

答案 3 :(得分:0)

我找到了一种方法来收集我使用ProcessID打开的每个TELNET窗口的PID。然后,我可以使用该TELNET会话ID引用特定窗口并捕获焦点,因此当我使用SendKeys输入命令时,它会将它们输入到正确的窗口(大多数时间)。我的情况需要同时打开多个TELNET窗口。

(找到你的帖子寻找一种移动/调整窗口大小的方法,但我还是认为我会分享:)

当我激活窗口时,我会这样开始:

Dim Shell, Network
Dim telnet_session01
Dim telnet_session02
Set Shell = WScript.CreateObject("WScript.Shell")
Set Network = WScript.CreateObject("WScript.Network")

Set telnet_session01 = Shell.Exec("""C:\Program Files\Winodws\telnet.exe"" HOST_NAME")
WScript.Sleep 2000
Shell.AppActivate telnet_session01.ProcessID

然后我有一个sub来调用ProcessID并传递字符串:

DelayedSendKeysWithFocus telnet_session01, "username"
DelayedSendKeysWithFocus telnet_session01, "password"

Sub DelayedSendKeysWithFocus(procid, str) 
'#! I have not observed consistent behavior while including the Process ID 
'#!  with this SUB - the focus is not always retrained on the window in 
'#!  question before each SendKeys.
  WScript.Sleep 100
  Shell.AppActivate procid
  Shell.SendKeys str
End Sub

HTH

罗伯特