皆さんこんにちは、FascodeNetworkのブログスケジュール管理などを行っているなおこです。
今回は自宅で使っている100mbpsしか出ない(仕様)無線ルーターAtermWF1200HP2(廃盤)の無線機能が使えなくなる問題を一時的に解消する方法再起動を、ブラウザを経由せずコマンドラインのcurlコマンドで行う方法をご紹介しようと思います。
(今回紹介する方法は無線機能が使えなくなる症状にぶつからなければ使わないと思う。)
今回使うPCスペックや実行環境
- OS : Alter Linux(実質Arch Linux)とWindows10Proデュアルブート
- MB : B450M Steel Legend
- CPU : AMD Ryzen 5 5600x
- GPU : NVIDIA GTX 960
- RAM : 32GB
- HDD : 4TB
- SSD : 256GB m.2 (2022/9/15以降のブログには搭載)

今抱えている問題
1日に一回~二回程度 無線機能(WIFI)が使えなくなる。
負荷が多い処理をWIFI経由で行ったときに起こりやすい。
そして一度使えなくなると再起動するまで無線機能(WIFI)が使えない。
その結果WIFIとデータ通信を優先的に切り替える機能が使えない古いスマートフォンでWIFIを手動でオフにしないと通信が行えない状態になっている。
有線機能は問題なく使えるため無線ルーターじゃなくてLANハブとして使うという。。。
一時的な解決方法
一時的に解決する方法としては電源を抜いてさいど差し込むまたは有線LANル経由で再起動することです。
今回は有線LAN経由で一時的に治す方法を行っていきたいと思います。

下記のURLに接続します。接続を行うとベーシック認証の画面が表示されるのでルーターのユーザー名とパスワードを入力して進みます。
http://ルーターのIP/index.cgi/reboot_main

右側に表示されている再起動というボタンクリックし再起動を行います。

再起動後は無線機能が復活します。
コマンドラインからやってみる
上記の方法でおこなうのも良いですがわざわざブラウザを開くのはめんどくさいのでコマンドラインから実行できたらcronあたりで自動再起動を一時間毎に行うのもありかと思いやってみることにします。
とりあえず、index.cgi/reboot_mainのページでどんな処理が行われているかデベロッパーツールで確認して見ます。

ソースコードを見てみると再起動というボタンを押したら index.cgi/reboot_main_setにPOSTメソットでSESSION_IDを送信しているようです。
SESSION_ID 自体は非表示にされてるだけみたいです。


reboot_main ページで再起動のボタンを押すと一度 reboot_main_setを経由して reboot_main_finishにリダイレクトします。

つまり、
http://ルーターのIP/index.cgi/reboot_main_set にベーシック認証のPOSTメソッド SESSION_ID付きでアクセスすれば再起動できるということですね。
上記の内容をcurlコマンドにしたのが下記のものです。
curl --basic -u ユーザー名:パスワード http://ルーターのIP/index.cgi/reboot_main_set -X POST -d 'SESSION_ID=セッションID'
SESSION_IDの値が変動するか複数の環境で試しましたが変動しない模様。(ダイジョブなのか?)
いろいろ調べてたところ5chにSESSION_ID取得を自動化したシェルスクリプトがありました。
最後に
ルーターの再起動をコマンドラインから行う方法をご紹介しましたが真似する際は自己責任でお願いします。
それでは次のブログでお会いしましょう。
SESSION_IDが変動しないことには驚きですが、とりあえず良し(現場猫)
コメント