LoginSignup
0
2

More than 1 year has passed since last update.

Raspberry Pi で NURO光 の通信状況を記録する方法

Last updated at Posted at 2023-01-30

1. はじめに

2. この記事を読んでできること

  • Raspberry Piでシェルスクリプトとcronを用いて通信状況を記録できるようになる。

3. 必要なもの

  • Raspberry Pi(この記事では Raspberry Pi3 4GB版 を利用しました)
  • SDカード(16GiB)
  • インターネット環境
  • パソコン(Windows11など)
  • sshクライアントソフト(TeraTerm

4. 通信状況確認シェルの作成

  • 以下のコマンドを順次実行し、通信状況確認シェルを完成させます。
コマンドプロンプト
// ホームディレクトリに移動
$ cd

// ping_log.shファイルを新規作成
$ vi ping_log.sh

// 実行権限パーミッションを設定
$ chmod 755 ping_log.sh

// 手動実行(テスト実行)
$ ./ping_log.sh

// 実行結果ログの確認
$ cat ping.log
ping_log.sh
#!/bin/bash

# ping監視先の設定(区切り文字:半角スペース)
IP_LIST=(210.139.252.142)

# ログ出力先の設定
LOG_FILE=/home/pi/ping.log

# ping監視先の数だけ繰り返し
for ip in ${IP_LIST[@]}
do
  ping_result=$(ping -c 1 $ip | grep '100% packet loss')
  date_result=$(date)

  if [[ -n ${ping_result} ]]; then
    echo "[WARN] server inactive: $ip $date_result $ping_result" >> $LOG_FILE
  else
    echo "[INFO] server active: $ip $date_result" >> $LOG_FILE
  fi
done
  • 補足:IP_LIST変数は、IPアドレス以外にもホスト名(www.so-net.ne.jp)を設定することもできます。ただし、その際は、grepキーワードが'100% packet loss'ではなく、'Temporary failure in name resolution'になると思います。また、if文もif [ -n ${ping_result} ]; thenにすべきかもしれません、各自で試行錯誤してみてください。

5. crontabの設定

  • 毎分、1分間隔で自動的にシェル実行するよう、cron設定をおこないます。
  • 以下のコマンドを実行し、crontabを編集します。
コマンドプロンプト
// crontabの編集
$ crontab -e

# crontabの末尾に以下の1行を追記し保存する 
0-59 * * * * /bin/bash /home/pi/ping_log.sh

6. Timezoneの設定

  • ログのタイムスタンプが日本時間で出力されるよう、Timezoneを設定する。
  • 以下のコマンドを実行し、Timezoneを設定します。
コマンドプロンプト
// crontabの編集
$ sudo raspi-config
    → 4 Localisation Optionsを選択
        → I2 Change Timezoneを選択
            → Asiaを選択
                → Tokyoを選択
    → Finishを選択

// dateコマンド結果の確認
$ date

7. 通信状況ログの確認

  • tailコマンドにて、通信状況ログを監視確認します。
  • tailコマンドによるログ監視の中断は、CTRL+Cキー押下します。
コマンドプロンプト
// ホームディレクトリに移動
$ cd

// 通信状況ログの確認(ログ監視の中断は、CTRL+Cキー押下)
$ tail -f ping.log

[WARN] server inactive: 210.139.252.142 Tue 31 Jan 17:41:11 JST 2023 1 packets transmitted, 0 received, 100% packet loss, time 0ms
[WARN] server inactive: 210.139.252.142 Tue 31 Jan 17:42:11 JST 2023 1 packets transmitted, 0 received, 100% packet loss, time 0ms
[WARN] server inactive: 210.139.252.142 Tue 31 Jan 17:43:11 JST 2023 1 packets transmitted, 0 received, 100% packet loss, time 0ms
[WARN] server inactive: 210.139.252.142 Tue 31 Jan 17:44:12 JST 2023 1 packets transmitted, 0 received, 100% packet loss, time 0ms
[INFO] server active: 210.139.252.142 Tue 31 Jan 17:45:01 JST 2023
[INFO] server active: 210.139.252.142 Tue 31 Jan 17:46:01 JST 2023
[INFO] server active: 210.139.252.142 Tue 31 Jan 17:47:01 JST 2023
[INFO] server active: 210.139.252.142 Tue 31 Jan 17:48:01 JST 2023

8. おわりに

いかがでしたでしょうか?意外と簡単に通信状況を記録&確認することができたのではないかなと思います。
今回の記事が、みなさまの通信状況改善になれば幸いです。

2023/01/30 TAKAHIRO NISHIZONO

0
2
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
2