1

cmdプロンプトを開始し、デバイスにtelnetし、TFTPをサーバーに構成するVBScriptスクリプトがあります。ログインして手動で実行すると機能します。Windows Task Schedulerで自動化したいと思います。

VBScript スクリプトは次のとおりです。

set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "cmd" 
WScript.Sleep 100 
WshShell.AppActivate "C:\Windows\system32\cmd.exe" 
WScript.Sleep 300 
WshShell.SendKeys "telnet 10.20.70.254{ENTER}" 
WScript.Sleep 300 
WshShell.SendKeys "netscreen" 
WScript.Sleep 300 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300
WshShell.SendKeys "netscreen" 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300 
WScript.Sleep 300 
WshShell.SendKeys "save conf to tftp 10.10.40.139 test.cfg{ENTER}"
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close telnet session' 
set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.Run "cmd" 
WScript.Sleep 100 
WshShell.AppActivate "C:\Windows\system32\cmd.exe" 
WScript.Sleep 300 
WshShell.SendKeys "telnet 10.20.70.254{ENTER}" 
WScript.Sleep 300 
WshShell.SendKeys "netscreen" 
WScript.Sleep 300 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300
WshShell.SendKeys "netscreen" 
WshShell.SendKeys "{ENTER}" 
WScript.Sleep 300 
WScript.Sleep 300 
WshShell.SendKeys "save conf to tftp 10.10.40.139 palsg140.cfg{ENTER}" 'repeat as needed 
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close telnet session' 
WshShell.SendKeys "{ENTER}" 'get command prompt back 
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close cmd.exe

WshShell.SendKeys "{ENTER}" 'get command prompt back 
WScript.Sleep 200 
WshShell.SendKeys "exit{ENTER}" 'close cmd.exe
4

6 に答える 6

4

資格情報を使用してスクリプトを実行するスケジュールされたタスクを追加します。パスワードを変更するたびに、タスクの資格情報を更新する必要があることに注意してください。スクリプトが実行されているかどうかを確認できるように、スクリプトを実行するたびに電子メールなどで「電話をかける」ことをお勧めします。

これらの種類のアクティビティに対して別のサービス ID を設定することも良い考えです。サービス ID のパスワードを頻繁に変更する必要はないかもしれません。

于 2008-11-12T15:02:34.097 に答える
3

スケジュールされたタスクを追加して、そのタスクの資格情報やパスワードを入力しないでください。これにより、ローカルシステム(通常はタスクスケジューラサービスが使用するコンテキスト)で実行されます。

これはバックドアの脆弱性シナリオであることに注意してください。スクリプトファイルの編集を許可された人は、タスクを実行するマシンで望ましくないことを行うためにスクリプトファイルを悪用する可能性があります。それを防ぐために、スクリプトファイルに適切な権限を設定してください。一方、ローカルシステムとして実行されているタスクは、ネットワーク上で大混乱を引き起こすことはできません。

スクリプトファイルを少し要約することをお勧めします。

WshShell = WScript.CreateObject( "WScript.Shell")を設定します

「cmd.exe」を実行します
SendKeys "telnet 10.20.70.254 {ENTER}"
SendKeys「netscreen」
SendKeys "{ENTER}"
SendKeys「netscreen」
SendKeys "{ENTER}"
SendKeys "save conf to tftp 10.10.40.139 test.cfg{ENTER}"
SendKeys "exit{ENTER}"'telnetセッションを閉じる'

「cmd.exe」を実行します
SendKeys "telnet 10.20.70.254 {ENTER}"
SendKeys「netscreen」
SendKeys "{ENTER}"
SendKeys「netscreen」
SendKeys "{ENTER}"
SendKeys "save conf to tftp 10.10.40.139palsg140.cfg{ENTER}"'必要に応じて繰り返します
SendKeys "exit{ENTER}"'telnetセッションを閉じる'
SendKeys"{ENTER}"'コマンドプロンプトを取得します
SendKeys "exit{ENTER}"'cmd.exeを閉じます
SendKeys"{ENTER}"'コマンドプロンプトを取得します
SendKeys "exit{ENTER}"'cmd.exeを閉じます

サブSendKeys(s)
  WshShell.SendKeys s
  WScript.Sleep 300
サブ終了

サブラン(コマンド)
  WshShell.Runコマンド
  WScript.Sleep 100
  WshShell.AppActivateコマンド
  WScript.Sleep 300
サブ終了

于 2008-11-12T15:24:10.963 に答える
1

ログインしていない場合、SendKeys は機能しません。とにかく、私の経験では信頼できません。DOS バッチ ファイルを使用する方がよい場合があります。

getftpconf.bat:

telnet 10.10.40.139
netscreen
netscreen
save conf to tftp 10.10.40.139 palsg140.cf
exit

そんな感じ。

コマンド プロンプトに記録する必要がある出力がある場合は、コマンド ライン ショートカットの最後に「 >> output.txt」を追加できます。

次に、その output.txt を ftp 経由で必要な場所に送信する別のバッチ ファイルを呼び出すことができます。

Windows でスケジュールされたタスクとして実行するように、このバッチ ファイルを簡単にセットアップできます。

于 2008-11-17T14:09:02.650 に答える
1

これを含むバッチファイルを作成するだけです:

cscript.exe myscript.vbs

myscript.bat のような名前で保存します。

スケジュール タスクを使用して、.bat ファイルをスケジュールします。スケジュールされたタスクを作成した後、そのプロパティをチェックして、適切なユーザー権限があることを確認する必要がある場合があります。

ロゴなどを表示しないように、cscript で使用できるオプションがいくつかあります。

于 2009-06-16T21:39:44.170 に答える
1

デスクトップがロックされているか、ユーザーがログインしていない場合、SendKeys は機能しないと確信しています。

于 2008-11-12T17:46:48.303 に答える
0

バッチファイルは、Telnetを使用するWindowsでは機能しません(UNIXでは正常に機能します。Microsoftに移行する方法です)。すでにここで述べたように、sendkeysは、ログオンしていない場合、vbaでは機能しません。

申し訳ありませんが、「これは機能します」という解決策がありません....同じ問題で立ち往生しています

于 2009-06-16T21:27:19.267 に答える