0

IP アドレスの大きなリストをループし、それぞれ telnet を実行し、ログイン情報を送信し、終了するコマンドを送信するスクリプトを作成しています。次に、ログファイルで特定の文字列をチェックし、文字列が含まれている場合は「UPS です!」と出力します。文字列が含まれていない場合は「UPS ではありません」。現時点では、スクリプトは 1 つの小さなエラーに対して 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

4 に答える 4

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

HTH

ロバート

于 2013-07-10T21:23:47.863 に答える
0

telnet スクリプトをバッチで実行する場合は、 PuTTY (より具体的にはplink )を使用することをお勧めします。

于 2013-06-20T19:07:10.903 に答える
0

Windows用のスクリプト可能なtelnetツールについては、これについてGoogleで検索してください。

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

于 2013-06-21T03:20:33.063 に答える
0

次のようなtelnetopencloseコマンドで作業してみてください

telnet

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

quit
于 2013-06-20T17:23:56.013 に答える