LTE/3Gルータを自動的に再起動させる(その2)

今週は急に暖かになってきました。家の裏にある梅の木もいい感じで咲いています。
春はそこまで来ているな、と実感しているmi2yo4です。

今日の内容はその1からの続きとなります。まだ読んでいない人はこちらから見て下さいね。

再起動コマンドのテスト

howtousewireshark
前回までで、再起動ボタンを押した際にローカルLAN上のDCR-54G/Uに向けて出ているパケットが判りました。

今回はルータのIPアドレスが192.168.0.1であることが前提となっていますが、ルータに向けての再起動スクリプトは以下の通りとなります。

curl -d 'page=tlreset&reset_flag=1&functionIndex=1' 'http://192.168.0.1/tlreset.htm'

実際に試してみますと…無事動作成功!
後はこれを外部への疎通が確認できない際に動作するようにしてみましょう。

疎通チェックして、必要であればルータを再起動する

ここからはシェルスクリプトの知識が必要となります。
ただ、これぐらいの簡単なスクリプトであれば下記参考にしたサイトを見て貰えれば問題ないかと思います。

#!/bin/bash
ping -c 1 [外部サーバIPアドレス] > /dev/null

if [ $? -ne 0 ]
then
    curl -d 'page=tlreset&reset_flag=1&functionIndex=1' 'http://192.168.0.1/tlreset.htm'
fi

やっていることの概要は以下の通りです。

  • 外部サーバに対して1回ping信号を送信する
  • その結果が正常(0)で無ければ(=異常だったら)、ルータを再起動する。

単純ですね!

定期的に実行する

後は、このシェルスクリプトに適当な名前をつけて保存します。
そうですね…zombie.shとでも名づけましょう。この際名称のセンスについては言及しないという事で^^

まずはzombie.shに実行権限をつけておきます。これをしておかないと、シェルスクリプトとして実行できないためです。

chmod +x zombie.sh

後はcrontabにて定期的に実行するようにしましょう。

*/5 * * * * /path/to/zombie.sh > /dev/null

終わりに

今回の内容はいかがだったでしょうか?
社内では今回組んだスクリプトから更に改良した状態で現場運用をしている所です。
(社内で試験していた際には問題ないですが、意外と現場に持って行くと想定していなかった事が起きたりしますので…^^)

ではまた!

参考にしたサイト

シェルスクリプトについては以下のサイトを参考にしました。
http://www.atmarkit.co.jp/ait/articles/0010/19/news003.html