LoginSignup
0

More than 3 years have passed since last update.

pingを用いた相互監視システム

Posted at

はじめに

卒業論文の一環で私が研究でやってきた技術的な部分を投稿します。初心者ですので読んでいておかしい部分があると思いますが、ご容赦ください。

提案

今回投稿する提案内容はpingを用いた相互監視システムです。まず、この相互監視システムでに至るまでの経緯を書きます。相互監視という単語が含まれている通り、テーマとしては異常検知です。設置したIoT機器などが数日後には動いていない、壊れてて記録を取ってなかったということは多々あると思います。そのような問題をITの力で少しでも解決できないかと思い今回は相互監視システムの提案を行いました。
 今回の提案を具体的に説明すると、pingコマンドをシェルスクリプトで送信するという内容です。おそらくネット上で「ping 監視 プログラム」と検索すればより複雑で高度な内容のプログラムが出てくると思います。しかし、私がそれらを再現しようと試みると謎のエラーや環境の違いなどによりどうしても再現することが難しいとわかりました。友人に相談してなんとかシンプルでわかりやすいプログラムに至ることが出来たので今回はその紹介を行います。
 提案内容をまとめると,ubuntuのシェルスクリプトの環境下でpingコマンドをプログラムにより送信することにより生存確認ができるという提案です.

用意したもの

-ubuntu
-シェルスクリプト

 今回はプログラムの紹介なので以上の2つを使います。シェルを使う前提ですので、同様の環境を用意していただけたら再現できると思います。

プログラム

ping_alert.sh
#!/bin/sh

target="172.217.27.67"
aaa=$(ping -c 1 "$target" | grep "received" | awk '{print $4}')
if [ $aaa -eq 1 ]; then
        echo "success"
else
        echo "failure"
fi

プログラムの説明

今回ターゲットにしているIPアドレスはGoogleです.普段の生活からGoogleを利用していますので,IPアドレスが確実に返ってくることが期待できると思いターゲットにしました.プログラムの中身の話ですが,aaaと呼ばれる変数にpingコマンドの結果を収容しています.pingコマンドには「|」パイプを用いてpingの出力結果から自分の欲しい情報を抜き出しています.-cはpingを何回送るのか決めているので,この場合は1です.grepは自分の欲しい情報の行の単語を指定しています.pingコマンドは普通に打つと
スクリーンショット (594).png
こういう風に表示されます.この場合だとgrepが持ってくるのはreceivedが含まれている行ですので,4行目です.その次にawkによって使いたいテキスト,情報を指定します.今回の場合ですと,4列目をprint出力しています.この場合ですと1が出力されます.出力された1をaaaに代入しています.
 その後はif文を用いて出力された1がちゃんと1なのか判定を行います.1ならば,trueですので,succesと表示されます.それ以外だとfailureと表示されます.

評価

今回のプログラムはシェルに実装されてるpingコマンドをシェルスクリプトを用いて実行している内容です。その結果を下記に記します。
スクリーンショット (592).png

今回のプログラムはpingを送り、反応が返ってくれば「success」と表示できるようにしました。また,ネットワークが切れてる状態だと「failure」と表示されます.送信先の反応があるかどうか確認できるという点では必要最低限の生存確認ができるといえると思います.

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
What you can do with signing up
0