BuffaloのWi-Fiルータをスケジュール再起動させたい
そんなことを思ってしまった、わたしのための備忘録です。
1. 背景
動作が不安定
これまでいろいろなホームルータを触ってきたのですが、いずれのルータも長時間起動していても動作、つまりはネットーワク接続性が不安定になることはありませんでした。
最近使用しているBuffaloのWi-Fiルータ「WSR-6000AX8P」なのですが、一週間ほど使用しているととても不安定になります。ファームウェアも最新1.25Wi-Fiに接続しているけれども、インターネットに接続できない、または通信速度が目に見えて落ちる(300Mbps→3Mbpsとか)などの事象が続けて発生。
新しいルータを購入するという手段はあるけれども、今の時代、エコに生きなければなりませんので、「自動で再起動させればいいや」ということにしました。
スケジュール再起動の機能がない!?
Wi-Fiルータにブラウザで接続して、「スケジュールの再起動はどこで設定できるのかね?」と探すも見当たらない。全メニューをクリックするが見当たらない。
「まさか」
とおもい、ググって調べるとバッファローのルータにそんな機能は実装されていないとのこと。
「いや、だったら、もうちょっと安定し動いてよ・・・」
ということで、しばし呆然。
2. 再起動させるぞー
必要は発明の母
ならば、スケジュール指定して再起動できるようにすればよい。簡単に思いつく解決手段としては二つある。
プランA: スマートプラグを購入。スマートプラグのスケジュール機能で、Wi-Fiルータを再起動させる
プランB: 時間になったら、Wi-Fiルータにログインして再起動ボタンを押下するプログラムを作る
プランAを実現するためにはWi-Fiルータが2つ必要です。なぜなら、スマートプラグがWi-Fiルーターの電源を切ると、同時にそのスマートプラグへの接続も切れてしまい、起動要求を送れなくなるためです。
ということで、プランB発動です。
再起動ツールを作りました
・・・ということで作って、GitHubにアップしました。
バッファローのWi-Fiルータを再起動させるDockerコンテナです。ブラウザあ自動操作するSeleniumを使用してログインプロセスとUIインタラクションを処理し、スケジュールされたルーターの再起動を可能にしています。
(セットアップの仕方と使い方は、README.md に詳しめに書いてます。)
時間がかかったのは、Wi-Fiルータがどんなパラメータを渡してどう画面遷移させればエラーにならないのか?という部分の解析。その解析結果は、src/reboot.py の rebootメソッドとloginメソッドを見て頂ければと思います。
セットアップ
いつも通りのセットアップ手順のコーナーです。
git clone https://github.com/ngc-shj/router-reboot-docker
cd router-reboot-docker
#
./scripts/build.sh
こちらでDockerのビルドまで完了。
続いて、crontabに以下のエントリーを追加します。午前5時丁度に動き始めます。あ、*NIX系のOSでお願いします。
0 5 * * * /path/to/router-reboot-docker/scripts/cron-reboot.sh
cron経由で再起動させるためのscript (cron-reboot.sh) も用意していますので、そちらを使用します。
実行結果
logsディレクトリにログが出力されるので、指定した時刻が経過したら内容を確認してみましょう。
$ cat logs/router-reboot.log
(snip)
2024-11-09 05:00:09 Starting router reboot process...
2024-11-09 05:00:09 Starting new container...
2024-11-09 05:00:09,464 - INFO - Starting Chrome driver...
2024-11-09 05:00:10,253 - INFO - Chrome driver started successfully
2024-11-09 05:00:25,041 - INFO - Login successful
2024-11-09 05:00:25,041 - INFO - Accessing reboot page...
2024-11-09 05:00:26,560 - INFO - Looking for reboot button...
2024-11-09 05:00:27,707 - INFO - Router is rebooting...
2024-11-09 05:02:33,371 - INFO - Reboot sequence completed
2024-11-09 05:02:33,468 - INFO - Router reboot completed successfully
2024-11-09 05:02:33 Router reboot process completed
2024-11-10 05:00:04 Starting router reboot process...
2024-11-10 05:00:04 Starting new container...
2024-11-10 05:00:04,538 - INFO - Starting Chrome driver...
2024-11-10 05:00:05,732 - INFO - Chrome driver started successfully
2024-11-10 05:00:24,147 - INFO - Login successful
2024-11-10 05:00:24,147 - INFO - Accessing reboot page...
2024-11-10 05:00:26,281 - INFO - Looking for reboot button...
2024-11-10 05:00:26,660 - INFO - Router is rebooting...
2024-11-10 05:02:39,790 - INFO - Reboot sequence completed
2024-11-10 05:02:39,926 - INFO - Router reboot completed successfully
2024-11-10 05:02:39 Router reboot process completed
ちゃんと動いています。ルータ側のログも確認してみましょう
はい、5時過ぎに再起動してました。
めでたし、めでたし。