ブロードバンドルーターを自動再起動するお手軽な処理を作ってみました。
使ったツールは、Windows標準機能のタスクスケジューラとWget
(ダブルゲット)です。この2つを組み合わせると、同ネットワーク上のPCから、ルーターの設定ページに自動でログインを行った後、再起動の処理を自動的に実行させる事ができます。再起動のタイミングは、タスクスケジューラの設定にて、PCの起動時や1日に一回など自由に変更が可能です。
develop or drink ? ©
今回はその手順や参考になった記事の備忘録としてまとめたいと思います。当記事ではWindwosの処理について触れていきますが、mac OSXやLinuxでもWgetが使えますので流用する事ができます。
常時接続の安定性で定評のあるヤマハ製のルーターです。
目次
インターネット接続に必要な機器と言えば、ブロードバンドルーター(ルーター)です。本来ならば常時安定したネット回線接続を提供してくれる機器なのですが、機種によっては一定期間の経過後に接続が不安定になったり、回線が切断されてしまうモデルもあるようです。
幸いなことに、回線の安定性を回復させるには、ルーターの再起動や電源の再投入で解決できるものが殆どです(荒業ですがw)。今回は定期的にルーターのリブートを行い、インターネット接続の安定性を簡易的に保つ試みをしてみました。
まずはルーターの設定ページを確認する
まずはルーターの設定ページにPCのブラウザからアクセスしてみます。最初にログインページが表示される物が大半かと思いますので、ログインフォームの送信パラーメータをChrome DevToolsで確認しておきます。
ログインページをChrome DevToolsで調べる ©
上記の例ではユーザー名とパスワードをPOSTで送信していることが分かります。送り先はルーターに用意されているlogin.exe
というプログラムです。
フォームの項目 | 値 |
リクエストメソッド | POST |
パラメーター名と値 | user="ユーザー名" |
パラメーター名と値 | password="パスワード" |
送信先パス | /cgi-bin/login.exe |
続いて、再起動の処理が行えるページに遷移してみます。こちらも以下の例ではフォームボタンとなっています。
同様に再起動ページをChrome DevToolsで調べる ©
Chromeで調べてみると、隠しパラーメータでvalue="Reboot"
をPOSTで送信している事が分かります。送り先はrestart.exe
です。
フォームの項目 | 値 |
リクエストメソッド | POST |
パラメーター名と値 | value="Reboot" |
送信先パス | /cgi-bin/login.exe |
Wget for Windowsを入手する
続いて、Windowsでwget
が使えるように準備を行います。下記のサイトからWget for Windowsをインストールします。
Wget for Windows
上記のBinaries
とDependencies
のZipファイルをダウンロードしてフォルダーの中身を統合した後、C:\
ドライブ直下やC:\Program Files
に配置します。またフォルダーの中身に含まれるbin
ディレクトリの環境変数パスを通しておきます。
Mac OSXやLinuxでwgetをインストールするには?
Mac OSXではHomebrewからインストールする事ができます。
Linuxの場合はapt-getからインストールできます。
wgetでログイン後、再起動を行うバッチ処理を作成する
続いてwget
を使って、ルーターの設定ページにログインし、再起動のフォームを送信するようなバッチファイル(例:reboot.bat
)を書きます。
reboot.bat1 2 3 4 5 6 7 8 9 10 11
| ping localhost -n 5 > nul
cd c:\example-folder
ping localhost -n 5 > nul
wget --save-cookies cookies.txt --post-data "user=root&password=" -O - http://192.168.xx.1/cgi-bin/login.exe --referer="http://192.168.xx.1/"
ping localhost -n 5 > nul
wget --load-cookies cookies.txt --post-data "action=Reboot" -O - http://192.168.xx.1/cgi-bin/restart.exe --referer="http://192.168.xx.1/advance-admin-init.stm"
|
ここで今回使うwget
コマンドのパラメーターを確認してみたいと思います。
wgetのパラメーター | 説明 |
ping localhost -n 5 > nul | 指定した秒数待機する(例では5秒待機) |
--save-cookies | ログイン後のクッキーをテキストファイルに保存する |
--load-cookies | 保存されたクッキーを読み込み、処理を行う |
--post-data | POSTで送るパラメーターを指定する |
-O - | wgetでサイトにアクセス後、ページファイルをダウンロードしない |
--referer | リファラを指定する。リファラにはログイン後リダイレクトされるアドレスなどを指定しておく |
バッチファイルでは、前項で調べた送信フォームのパラーメーターをPOSTで送信します。また、ログイン成功時にはクッキーを記録してログイン状態を保ちます。クッキーはログイン後のページで利用します。
また、各処理の間にPING
コマンドを挿入して、処理の待機を行うようにしました。これは1つの処理が実行されて完了するまでに時間が生じると、実行完了前に次の処理が実行されてしまうのを防ぐ目的となっています。コマンドを実行した感触としては、CD
コマンドでこの現象が起こりやすいようです。wget
コマンドでは上から順番に処理が行われていくようですので、待機時間は不要かもしれません。
また、wget
コマンドの--save-cookies
オプションは非常に重要です。クッキーを保持しないとForbidden403
エラーが表示される事があります。
また、各ページにアクセスする際にはwget
コマンドに--referer
オプションを指定します。こちらもクッキーに続いて重要なポイントになっていきます。リファラを指定しないとNot Implemented 501
エラーが発生します。
Windowsのタスクスケジューラを作成する
最後にタスクスケジューラを作成します。WindowsのタスクスケジューラはPC起動時や1日に一回など、様々な条件で実行させる事ができます。今回はパソコンの起動時に実行させるように設定しました。
起動時にバッチファイルを実行させる ©
続いて、作成したタスクスケジューラのプロパティから詳細を設定しておきます。
ログイン時のみ実行 ©
バッテリーの状態に関わらず実行 ©
参考にさせていただいた記事
trash-area.com
WindowsXP標準機能だけでスリープ(コマンド)の実装
指定した秒数だけコマンドをスリープ(待機)させる方法についての解説です。TIMEOUT
コマンドやSLEEP
コマンドが主流なのですが、Windows XPではこれが使えません。標準機能だけでスリープさせるにはPING
コマンドで代用できるようです。
教えて!goo
ルーターを自動再起動させたいです
wgetを使ってログインフォームにログイン後、再起動設定に入り再起動ボタンを押す流れの質問回答がされています。
@IT
HTTP/HTTPSでまとめてデータを取得するwgetコマンドとは? wgetのコマンド一覧
wgetの基本的な使い方が解説されています。
ctrlshift’s diary
wgetとcurlの根本的な違い
代表的なダウンローダであるwgetとcurlの違いについて。wgetはリンクを辿って再帰的にファイルをダウンロードできるのが特徴です。これに対してcurlはそれが出来ないようです。ただしcurlは様々なプロトコルに対応していたり、連番ファイルのダウンロードが容易など、利用シーンに違いがあるようです。
Qiita
Windowsでwgetする色々な方法
Windwosでwgetが使えるツールが一覧で解説されています。
@IT
wgetとメールを使ったお手軽サーバ死活監視
wget for Windowsを使った操作の解説がされています。
Wget for Windows
Wget for Windowsのダウンロードページです。インストールするには、上記リンクにあるBinariesとDependenciesのZipファイルをダウンロードしてフォルダーの中身を統合した後、C:\
ドライブ直下やC:\Program Files
に配置して、bin
ディレクトリのパスを通して使います。
Qiita
wgetでこういう時はこうする
wgetの色んな使い方がまとまっています。ログインフォームのようなログインIDとパスワード入力欄があるサイトのログイン方法も解説されています。
ハックノート
wgetコマンドでファイルを保存しないで内容だけ出力する
wgetの通常コマンドでは、アクセス先のファイルをダウンロードしてしまいます。ファイルを保存しない動作をさせるには-O - (アクセス先のURL)
とオプション指定します。