Shellスクリプトはあるipネットワークの円滑な状況を測定することを実現します。(ショートメールアラーム機能を含む)


一日をかけて、あるipがネットワークを通じているかどうかを検出するシナリオを書きました。ネットが開通しているかどうかを検査するだけの機能は実現しやすいですが、制限機能を加えたものが実現しにくいです。

#!/bin/bash
####################################################################################
# , 192.168.10.231 ,  
# , :                                     
# , , 。   
# ip , , ip               
####################################################################################
#
source /root/.bash_profile
#
mail_list='[email protected],[email protected]'
#ping ip
ping=`ping -c 3 192.168.1.69|awk 'NR==7 {print $4}'`
# ping ,
if [ $ping -eq 0 ]
then
  # mailinfo ,
  if [ ! -e ./mailinfo ]
  then
  touch ./mailinfo
  fi
  # ,
  now_time=`date`
  # ./mailinfo ,
  row_num=`wc -l ./mailinfo | cut -c 1`
  if [ $row_num -eq 0 ]
    then
    echo " "
    echo -e "1.69 ,

:$now_time" | mutt -s "1.69 " $mail_list
    #
    date +%Y%m%d-%H%M > ./mailinfo
    echo 1 >> ./mailinfo
  # mailinfo , ( 1 ) ,
  else
    #
    last_date=`head -1 ./mailinfo | cut -c 1-8`
    last_time=`head -1 ./mailinfo | cut -c 10-13`
    # 1
    current_date=`date +%Y%m%d`
    current_time=`date +%H%M`
    # , 10# 0 8
    let time_diff=10#$current_time-10#$last_time
    #
    send_times=`tail -1 ./mailinfo`
      # :
      # > , , send_times 1
      if [ "$current_date" -gt "$last_date" ]
        then
        echo " "
        echo -e "1.69 ,

:$now_time" | mutt -s "1.69 " $mail_list
        #
        date +%Y%m%d-%H%M > ./mailinfo
        echo 1 >> ./mailinfo
      fi
      # and 1 , , send_times 1
      if [ "$current_date" -eq "$last_date" -a $time_diff -ge 100 ]
        then
        echo " "
        echo -e "1.69 ,

:$now_time" | mutt -s "1.69 " $mail_list
        #
        date +%Y%m%d-%H%M > ./mailinfo
        echo 1 >> ./mailinfo
      fi
      # and send_times 1, , 1
      if [ "$current_date" -eq "$last_date" -a $send_times -eq 1 ]
        then
        echo " "
        echo -e "1.69 ,

:$now_time" | mutt -s "1.69 " $mail_list
        #
        date +%Y%m%d-%H%M > ./mailinfo
        echo 2 >> ./mailinfo
      fi
      # and send_times 2, , 1
      if [ "$current_date" -eq "$last_date" -a $send_times -eq 2 ]
        then
        echo " "
        echo -e "1.69 ,

:$now_time" | mutt -s "1.69 " $mail_list
        #
        date +%Y%m%d-%H%M > ./mailinfo
        echo 3 >> ./mailinfo
      fi
  fi
fi