icmp-checker 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #!/bin/sh
  2. ZBX_SERVER_ADDR="127.0.0.1"
  3. ZBX_SERVER_PORT="10051"
  4. HOST_IP="${1}"
  5. HOST_NAME="${2}"
  6. PING_COUNT="${3}"
  7. PING_INTERVAL="${4}"
  8. NOFORK="${5}"
  9. if [ $# -lt 4 ]; then
  10. printf "Wrong parameter count\n" >&2
  11. printf "Usage: $(basename "${0}") <HOST_IP> <ZABBIX_HOST_NAME> <NUMBERS_OF_PING_REQUESTS> <INTERVAL> [<NOFORK>]\n" >&2
  12. exit 2
  13. fi
  14. if [ "${NOFORK}" != 1 ]; then
  15. start-stop-daemon --background --start --exec $(readlink -f "${0}") -- "${HOST_IP}" "${HOST_NAME}" "${PING_COUNT}" "${PING_INTERVAL}" 1
  16. else
  17. read ping_loss ping_min ping_max ping_avg <<EOC
  18. $(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#')
  19. EOC
  20. 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
  21. echo 0
  22. exit 1
  23. fi
  24. 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
  25. echo 0
  26. exit 1
  27. fi
  28. 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
  29. echo 0
  30. exit 1
  31. fi
  32. 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
  33. echo 0
  34. exit 1
  35. fi
  36. fi
  37. echo 1
  38. exit 0