ping_chk.sh 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #!/bin/bash
  2. #Whritted: dufs
  3. #E-mail: fengshan.du@zznode.com
  4. #Date: 2016-09-19 13:00
  5. #ping check
  6. # ping输出有如下两种结果,有时候会有duplicates输出
  7. #
  8. # 10 packets transmitted, 10 received, +1 duplicates, 0% packet loss, time 9001ms rtt min/avg/max/mdev = 0.432/6.303/32.608/12.369 ms
  9. # 10 packets transmitted, 10 received, 0% packet loss, time 9000ms rtt min/avg/max/mdev = 0.418/0.466/0.500/0.032 ms
  10. #
  11. SH_NAME=`basename $0`
  12. SH_HOME=$HOME/zsjk
  13. SH_Log=$SH_HOME/log/${0%\.sh*}.log
  14. function outlog {
  15. echo "`date '+%Y-%m-%d %T'` : " "$*" >> $SH_Log
  16. logSize=`ls -lrt $SH_Log|awk '{print $5}'`
  17. if [ $logSize -gt 10240000 ]
  18. then
  19. cp -rp $SH_Log $SH_Log.`date '+%Y-%m-%d'`
  20. gzip $SH_Log.`date '+%Y-%m-%d'`
  21. cat /dev/null>$SH_Log
  22. fi
  23. }
  24. outlog =============================================================
  25. outlog start check
  26. sysapp="【集中故障】"
  27. msgTemp=$SH_HOME/conf/sendmsg_temp.sql
  28. if [ ! -f $msgTemp ]
  29. then
  30. outlog can not find $msgTemp, please check !!!
  31. exit 0
  32. fi
  33. ip_list=$SH_HOME/conf/pingChk.conf
  34. if [ ! -f $ip_list ]
  35. then
  36. outlog can not find $ip_list, please check !!!
  37. exit 0
  38. fi
  39. cd $SH_HOME/bin
  40. for line in `cat $ip_list`
  41. do
  42. sharppos=$(echo $line|awk '{print index($1,"#")}')
  43. if [ $sharppos = 1 ]
  44. then
  45. #echo remarked line,ignore
  46. continue
  47. fi
  48. outlog -------------------------------------------------------------
  49. Local_IP=`echo $line | awk -F"," '{print $1}'`
  50. outlog read config: Local_IP $Local_IP
  51. ping $Local_IP -c 10 -s 1024 >$SH_HOME/data/ping.$Local_IP
  52. outlog `cat $SH_HOME/data/ping.$Local_IP |tail -2`
  53. dupCnt=`tail -2 $SH_HOME/data/ping.$Local_IP| head -1|grep -c duplicates`
  54. if [ $dupCnt -eq 1 ]
  55. then
  56. dupNum=`tail -2 $SH_HOME/data/ping.$Local_IP| head -1|awk '{print $6}'||sed 's/\+//g'`
  57. pkgLos=`tail -2 $SH_HOME/data/ping.$Local_IP| head -1|awk '{print $8}'|sed 's/\%//g'`
  58. else
  59. pkgLos=`tail -2 $SH_HOME/data/ping.$Local_IP| head -1|awk '{print $6}'|sed 's/\%//g'`
  60. fi
  61. if [ $pkgLos -gt 0 ]
  62. then
  63. outlog ping $Local_IP packet loss is $pkgLos % , please check !!!
  64. curT=`date '+%Y-%m-%d %T'`
  65. msg="$sysapp$curT ping $Local_IP packet loss $pkgLos %,请检查。"
  66. sed -e "s/__MSG__/$msg/g" \
  67. -e "s/__SHELL__/$SH_NAME/g" $msgTemp > $SH_HOME/bin/ping_chk_$Local_IP.sql
  68. outlog `./sendMsg.sh ping_chk_$Local_IP.sql`
  69. cd $SH_HOME/pyChk/
  70. python Demo_sms.pyo 13730885681 "$msg"
  71. rm $SH_HOME/bin/ping_chk_$Local_IP.sql
  72. fi
  73. outlog -------------------------------------------------------------
  74. done
  75. outlog =============================================================
  76. exit 0