icmp-checker 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/sh
  2. # {{{ Variables
  3. ZBX_SERVER_ADDR="127.0.0.1"
  4. ZBX_SERVER_PORT="10051"
  5. HOST_IP="${1}"
  6. HOST_NAME="${2}"
  7. PING_COUNT="${3}"
  8. PING_INTERVAL="${4}"
  9. NOFORK="${5}"
  10. # }}}
  11. # {{{ main()
  12. if [ $# -lt 4 ]; then
  13. printf "Wrong parameter count\n" >&2
  14. printf "Usage: $(basename "${0}") <HOST_IP> <ZABBIX_HOST_NAME> <NUMBERS_OF_PING_REQUESTS> <INTERVAL> [<NOFORK>]\n" >&2
  15. exit 2
  16. fi
  17. if [ "${NOFORK}" != 1 ]; then
  18. start-stop-daemon --background --start --exec $(readlink -f "${0}") -- "${HOST_IP}" "${HOST_NAME}" "${PING_COUNT}" "${PING_INTERVAL}" 1
  19. else
  20. read ping_loss ping_min ping_max ping_avg <<EOC
  21. $(fping -c "${PING_COUNT}" -q -p "${PING_INTERVAL}" "${HOST_IP}" 2>&1 | sed -r 's#.*([0-9\.])%, min/avg/max = ([0-9\.]+)/([0-9\.]+)/([0-9\.]+)$#\1 \2 \3 \4#')
  22. EOC
  23. if zabbix_sender -z "${ZBX_SERVER_ADDR}" -p "${ZBX_SERVER_PORT}" -s "${HOST_NAME}" -k PingLoss -o "${ping_loss}" | grep -v 'sent:' | grep -q -v 'failed: 0'; then
  24. echo 0
  25. exit 1
  26. fi
  27. if zabbix_sender -z "${ZBX_SERVER_ADDR}" -p "${ZBX_SERVER_PORT}" -s "${HOST_NAME}" -k PingLatencyMin -o "${ping_min}" | grep -v 'sent:' | grep -q -v 'failed: 0'; then
  28. echo 0
  29. exit 1
  30. fi
  31. if zabbix_sender -z "${ZBX_SERVER_ADDR}" -p "${ZBX_SERVER_PORT}" -s "${HOST_NAME}" -k PingLatencyMax -o "${ping_max}" | grep -v 'sent:' | grep -q -v 'failed: 0'; then
  32. echo 0
  33. exit 1
  34. fi
  35. if zabbix_sender -z "${ZBX_SERVER_ADDR}" -p "${ZBX_SERVER_PORT}" -s "${HOST_NAME}" -k PingLatencyAvg -o "${ping_avg}" | grep -v 'sent:' | grep -q -v 'failed: 0'; then
  36. echo 0
  37. exit 1
  38. fi
  39. fi
  40. echo 1
  41. exit 0
  42. # }}}
  43. # vim: foldmethod=marker foldlevel=0 foldenable