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