0

我正在编写一个脚本,该脚本循环遍历大量 IP 地址,telnet 每个地址,发送登录信息,然后发送命令退出。然后它检查日志文件中的某个字符串,如果包含该字符串,它会输出“它是 UPS!” 如果不包含该字符串,则为“不是 UPS”。截至目前,脚本在一个小错误中执行得很好,我无法让 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

4 回答 4

0

谷歌在此,用于 Windows 的可编写脚本的 telnet 工具。

Telnet 脚本工具 v.1.0
由 Albert Yale 提供 ay@aci.qc.ca http://ay.home.ml.org/

于 2013-06-21T03:20:33.063 回答
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

然后我有一个子程序来调用该 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

高温高压

罗伯特

于 2013-07-10T21:23:47.863 回答
0

尝试使用 telnetopenclose类似的命令

telnet

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

quit
于 2013-06-20T17:23:56.013 回答
0

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

于 2013-06-20T19:07:10.903 回答