LoginSignup
0
0

More than 3 years have passed since last update.

モバイルルータのインターネットへの接続状況をロギングする

Last updated at Posted at 2017-11-09

概要

ローカル上のモバイルルータとインターネット上のクラウドサーバへの接続状況をロギングするスクリプト

用途

モバイルルータ(以下、ルータ)を使ってIoTシステムなどを運用していると、インターネット接続が不安定になることがある。このとき、

  • ルータが死んでいるのか
  • ルータは生きているがインターネットへのアクセスが不安定になっているのか

といった原因の切り分けを行いたくなる。そこで、ルータとクラウドサーバへの接続状況をロギングすることで、不安定となる原因の分析を可能とする。

ついでに、ルータのグローバルIPも取得する。モバイルルータを使ったIoTシステムでは、ルータのグローバルIPが切り替わるときに、サーバとの接続が切れて、アプリに問題が生じたりするので、グローバルIPをロギングできるとシステムのデバッグに役立つ。

スクリプト

接続状況の確認にはpingを用い、グローバルIPの取得はcurlを用いている。
接続状況をロギングしたいルータとクラウドサーバのIPアドレスをそれぞれ、router_ipとserver_ipに設定し、実行すると日別のログファイルに接続状況が書きだされる。
実際に利用する場合は、このスクリプトをcronで定期実行している。

check_status.sh
#!/bin/sh
ulimit -c unlimited
date=`date +"%Y-%m-%d"`
status=`date +"%Y-%m-%d %H:%M"`

router_ip="192.168.XXX.XXX" #local router IP address
server_ip="YYY.YYY.YYY.YYY" #cloud server IP address

#send ping to local router
/bin/ping ${router_ip} -c 3 >> /dev/null

#check return value from local router
if [ $? -eq 0 ]; then
status=${status}" router:OK"
else
status=${status}" router:NG"
fi


#send ping to cloud server
/bin/ping ${server_ip} -c 3 >> /dev/null

#check return value from cloud server
if [ $? -eq 0 ]; then
status=${status}" server:OK"
else
status=${status}" server:NG"
fi

#get router's global IP address
status=${status}" GlobalIP:"`curl -m 20 ifconfig.me`

echo ${status} >> ./log/${date}.log
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0