#! /bin/bash
# 變數要先宣告後才能使用
shopt -s -o nounset
HostList=${1:? '請提供主機IP列表檔!' }
[ ! -f $HostList ] && echo '主機IP列表檔不存在喔! 請檢查一下先!' && exit 1
# 日期時間
Date=$( date + '%Y%m%d%H%M' )
Date_for_man=$( date + '%Y-%m-%d %H 時 %M 分' )
# ping 的次數
pno=4
# 偵測結果存檔
padir= "/var/www/pa"
pahtml= "$padir/index.html"
pahtml_now= "$padir/pa-$Date.html"
#
# 函式區
#
html_head() {
[ ! -e $padir ] && mkdir -p $padir
cat <<HEAD > $pahtml_now
<html>
< head >
<title> ping alive 偵測結果< /title >
<meta HTTP-EQUIV= "Refresh" CONTENT= "900" >
<meta HTTP-EQUIV= "Pragma" CONTENT= "no-cache" >
<meta HTTP-EQUIV= "Cache-Control" content= "no-cache" >
<meta HTTP-EQUIV= "Expires" CONTENT= "Mon, 01 Jul 2000 06:00:13 GMT" >
<meta http-equiv= "Content-Type" content= "text/html; charset=Big5" >
< /head >
<body bgcolor= "white" >
<div align=center><font size=6><b>*** 我的主機監控 ***< /b >< /font >< /div >
<div align=center>偵測時間: $Date_for_man< /div >
<p>
<table width= "60%" align=center border=3>
< tr ><td nowrap>主機名稱< /td ><td>IP< /td ><td nowrap>最小反應時間< /td ><td nowrap>最大反應時間< /td ><td nowrap>平均反應時間< /td >< /tr >
HEAD
}
html_tr() {
if [ "$1" = "PingError" ]; then
cat <<TR >> $pahtml_now
< tr ><td>$host< /td ><td>$ip< /td ><td colspan=3><font color=red><b>無法連通!!!< /b >< /font >< /td >< /tr >
TR
else
cat <<TR >> $pahtml_now
< tr ><td>$host< /td ><td>$ip< /td ><td>$rt_min ms< /td ><td>$rt_max ms< /td ><td>$rt_avg ms< /td >< /tr >
TR
fi
}
html_end() {
cat <<END >> $pahtml_now
< /table >
< /body >
< /html >
END
ln -sf $pahtml_now $pahtml
}
#
# 主程式區
#
# 建立偵測結果網頁的檔頭
html_head
# 處理迴圈
#-----------------------------------------------------------------------
while read host ip
do
rt_min=
rt_avg=
rt_max=
while read r
do
if [[ $r == rtt* ]]; then
rt_min=$( echo $r | awk '{print $4}' | awk -F/ '{print $1}' )
rt_avg=$( echo $r | awk '{print $4}' | awk -F/ '{print $2}' )
rt_max=$( echo $r | awk '{print $4}' | awk -F/ '{print $3}' )
html_tr $rt_min $rt_avg $rt_max
fi
done < <( ping -c $pno $ip)
if [ -z $rt_min ]; then
html_tr PingError
fi
done < <( cat $HostList)
#-----------------------------------------------------------------------
# 建立偵測結果網頁的檔尾
html_end
|