この記事は2年以上前の投稿になります。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
最終回は、今までの技術を使って、ルータやアクセスポイントを自動で再起動させてみようと思います。
通常、ルータやアクセスポイントはベーシック認証かプログラム認証がかかったページへ操作します。どちらも以前記載している(3)や(4)を参考にして実現が可能です。
今回の例は「BUFFALO(バッファロー) WZR-HP-AG300H」を再起動させる例になります。>ベーシック認証
※BUFFALO(バッファロー)製のルータやアクセスポイントであれば、管理画面は大体同じ作りになっていると思います。
(下記をメモ帳等へコピー&ペーストして「~.vbs」というファイル名で保存すればOKです。)
Option Explicit Dim objIE Set objIE = CreateObject("InternetExplorer.Application") objIE.Silent = True objIE.Visible = True Dim strURL strURL = "http://192.168.xxx.xxx/cgi-bin/cgi?req=frm&frm=init.html" objIE.navigate2 strURL, 2, Nothing, Nothing, "Authorization: Basic [root]の認証コード\n" WScript.Sleep 5000 strURL = "http://192.168.16.252" & objIE.document.forms(0).action Dim strPOST strPOST = "reboot" & "=%BA%C6%B5%AF%C6%B0" strPOST = strPOST & "&" & objIE.document.forms(0).item(1).name & "=" & objIE.document.forms(0).item(1).value strPOST = strPOST & "&" & objIE.document.forms(0).item(2).name & "=" & objIE.document.forms(0).item(2).value Dim postData Set Stream = CreateObject("ADODB.Stream") Stream.Open Stream.Charset = "UTF-8" Stream.WriteText "dummy=1&" Stream.WriteText strPOST Stream.Position = 0 Stream.Type = 1 postData = Stream.Read Stream.Close objIE.navigate2 strURL, 2, Nothing, postData, "Authorization: Basic [root]の認証コード\r\nContent-type: application/x-www-form-urlencoded\r\n" WScript.Sleep 5000 Set objIE = Nothing Set objShell = Nothing
今回のポイントは再起動ボタンを表示させる画面と再起動ボタンを押したアクションの2度アクセスが必要なことです。
- 再起動ボタンを表示させる画面 ← ここでは不正アクセスを防止する目的でアクセスした記録のIDが発行されるので、それを取得しています。
- 再起動ボタンを押したアクション ← ボタンを押したというデータを送ってコマンドを認識させます。ここで上記で取得したIDもあわせて送信してあげる必要があります。
これでスクリプトファイルをクリックするとルータやアクセスポイントが再起動してくれるようになりました。
これを使って、特定のサーバが再起動したら、自動で再起動させたりさせることも可能になります。