案例需求

通过脚本判断远程计算机的存活状态

脚本应用场景

1、通过监控平台调用监控脚本对服务器进行监控
2、机器扫描

解决问题

1、运维人员实时掌控机器的状态,防止宕机或者由于压力过大造成请求处理延时,保障业务的稳定、高效运行

脚本思路

1、通过ICMP协议的ping命令ping目标主机

  1. 网络延迟,假报警如何解决?
  2. 3

2、分析ping结果
3、给出结论

  1. 全部ping结果为假,报宕机
  2. 全部ping成功,报正常
  3. 否则报警告

实现代码

  1. #!/bin/bash
  2. #
  3. #Author: www.zutuanxue.com
  4. #Created Time:
  5. #Release:
  6. #Description:
  7. #1、ping 目标主机三次,并接收每次的状态值,ping成功返回1,不成功返回0
  8. for ((i=1;i<4;i++));do
  9. #测试代码
  10. if ping -c1 $1 &>/dev/null;then
  11. #分析结果
  12. export ping_count"$i"=1
  13. else
  14. export ping_count"$i"=0
  15. fi
  16. #时间间隔
  17. sleep 0.3
  18. done
  19. #3、分析结果
  20. # 3次ping失败报警
  21. #
  22. if [ $ping_count1 -eq $ping_count2 ] && [ $ping_count2 -eq $ping_count3 ]&&[ $ping_count1 -eq 0 ];then
  23. echo "$1 宕机"
  24. elif [ $ping_count1 -eq $ping_count2 ] && [ $ping_count2 -eq $ping_count3 ]&&[ $ping_count1 -eq 1 ];then
  25. echo "$1 正常"
  26. else
  27. echo "warn: $1 网络延迟"
  28. fi
  29. #4、释放变量
  30. unset ping_count1
  31. unset ping_count2
  32. unset ping_count3