用Ping命令檢查主機是否正常連通

 

  1. -----------------------將ping的結果在web界面顯示---------------------------
  2. #!/bin/bash
  3. ###變量先要聲明才能使用
  4. shopt -s -o nounset
    #檢查參數是否正常
  5. hostlist=${1:?'請提供主機IP列表文件'}
  6. [ ! -f $hostlist ] && echo "IP列表文件不存在,請檢查" && exit 1
  7. date=$(date +'%Y%m%d%H%M')
  8. date_for_man=$(date +'%Y-%m-%d %H時 %M分')

  9. #ping的次數
  10. pno=4
  11. #檢查結果存文件
  12. padir="/var/www/html/pa"
  13. pahtml="$padir/index.html"
  14. pahtml_now="$padir/pa-$date.html"
  15. #函數區

  16. html_head() {
  17. [ ! -e $padir ] && mkdir -p $padir
  18. cat <<HEAD > $pahtml_now
  19. <html>
    <head>
  20. <title>ping alive 檢查結果</title>
  21. <meta HTTP-EQUIV="Refresh" CONTENT="900">
  22. <meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
  23. <meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
  24. <meta HTTP-EQUIV="Expires" CONTENT="Mon, 01 Jul 2000 06:00:13 GMT">
  25. <meta http-equiv="Content-Type" content="text/html; charset=Big5">
  26. </head>
  27. <body bgcolor="white">
  28. <div align=center><font size=6><b>***我的主機監控***</b></font></div>
  29. <div align=center>檢測時間:$date_for_man</div>
  30. <p>
  31.         <table width="%60" align=center border=3>
  32.         <tr><td nowrap>主機名</td><td>IP</td><td nowrap>最小反應時間</td><td nowrap>最大反應時間</td><td nowrap>平均反應時間</td></tr>
  33. HEAD
  34. }
  35.  
  36. html_tr() {
  37.         if [ "$1" = "pingError" ];then
  38.         cat <<TR >> $pahtml_now
  39.         <tr><td>$host</td><td>$ip</td><td colpan=3><font color=red><b>無法連通!!!</b></font></td></tr>
  40. TR
  41.         else
  42.         cat <<TR >> $pahtml_now
  43.         <tr><td>$host</td><td>$ip</td><td>$rt_min ms</td><td>$rt_max ms</td><td>$rt_avg ms</td></tr>
  44. TR
  45. fi
  46. }
  47. html_end() {
  48.         cat <<END >> $pahtml_now
  49.         </table>
  50.         </body>
  51.         </html>
  52. END
  53.         ln -sf $pahtml_now $pahtml
  54. }

  55. html_head
  56. #--------------------------------------------------------------------------------------------
  57. while read host ip
  58. do
  59.         rt_min=
  60.         rt_avg=
  61.         rt_max=
  62. while read r
  63. do
  64.         if [[ $r == rtt* ]];then //這裏的rtt要看不同的系統,centosping完後會有如上字樣
  65. //其他系統要看看最後迴應的結果中包含什麼,然後進行替換
  66.         rt_min=$(echo $r |awk '{print $4}' | awk -F/ '{print $1}')

  67.         rt_avg=$(echo $r |awk '{print $4}' | awk -F/ '{print $2}')

  68.         rt_max=$(echo $r |awk '{print $4}' | awk -F/ '{print $3}')
  69.         html_tr $rt_min $rt_avg $rt_max
  70. fi
  71. done < <(ping -c $pno $ip)
  72. if [ -z $rt_min ];then
  73.         html_tr PingError
  74. fi
  75. done < <(cat $hostlist)
  76. #--------------------------------------------------------------------------------------------------
  77. html_end
  78. -----------------------------執行腳本---------------------------
  79. ./ping.sh hostlist.txt
  80. ---------------------------------------------------------------
  81. -------------------web服務器正常運行的情況下,在瀏覽器中輸入http://webip/pa就可以看到結果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章