- -----------------------將ping的結果在web界面顯示---------------------------
- #!/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/html/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 colpan=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 //這裏的rtt要看不同的系統,centosping完後會有如上字樣
- //其他系統要看看最後迴應的結果中包含什麼,然後進行替換
- 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
- -----------------------------執行腳本---------------------------
- ./ping.sh hostlist.txt
- ---------------------------------------------------------------
- -------------------web服務器正常運行的情況下,在瀏覽器中輸入http://webip/pa就可以看到結果