Aterm WR8166Nの自動再起動
IPv4の外部公開用に設置した Aterm WR8166N というルーターが、ときどきストールしてしまって、IPv4で接続できなくなることが何度か発生しました。
そのたびに電源Off→Onしていたのですが、いいかげんめんどくさくなったので、自動再起動のスクリプトを作りました。
再起動画面はフレームになっているので、「再起動」ボタンあたりで、右クリック>フレームのソースを表示 でフォームを見てみます。
<form action=/boafrm/formReboot method=POST name="reboot_form">
<!-- NMR1222-20151203-Patch NEC solution to fix bug 1222 [Linear][Alvia] CSRF vulnerability was found -->
<input type="hidden" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" name="SESSION_ID">
<tr>
<td ><font size=2><input type="submit" value="再起動 " name="reboot" onclick="return rebootClick(this)"></td>
</tr>
<tr>
<td colspan="2"><hr size=1 noshade align=top></td>
</tr>
</form>
URLは http://192.168.10.100/reboot.htm でした。
ということで、http://192.168.10.100/boafrm/formReboot に SESSION_ID と reboot リクエストパラメータをPOSTすればOKということで、以下のシェルを作ります。
#!/bin/sh
SESSION_ID=$(curl -s -u user:password http://192.168.10.100/reboot.htm | perl -ne 'print "$1" if (/<input .*value="([^"]*)" name="SESSION_ID"/);')
curl -s -u user:password --data "SESSION_ID=${SESSION_ID}&reboot=%BA%C6%B5%AF%C6%B0+" http://192.168.10.100/boafrm/formReboot > /dev/null
echo "Now rebooted Aterm WR8166N"
「user:password」はBASIC認証のIDとパスワードです。
crontab に以下を書いて、週一で再起動となります。
2 4 * * 3 $HOME/reboot_router.sh
これでストールが収まりますように!