#!/bin/bash

WARN=5 #ms
CRIT=8 #ms
[ -r /etc/check_mk/ping_params.cfg ] && . /etc/check_mk/ping_params.cfg

[ ! -f /etc/check_mk/ping_hosts.cfg ] && exit

while read HOST_LINE; do
    HOST=$(echo $HOST_LINE | awk '{ print $1}')
    COUNT=$(echo $HOST_LINE | awk '{ print $2}')
    
    MSG=""
    
    if [ "x$COUNT" == "x" ] ; then
		COUNT=2
    fi
    
    PING=$(LANG=en_US ping -c $COUNT $HOST 2>&1)
    RET=$?
    
    STATUS=0
    
    RESPONSE=$(echo -e "$PING" | sed 's/.*time=\([0-9\.]*\) .*/RESPONSE_TIME \1/' | awk 'BEGIN {count=0; response=0;} {if ($1 == "RESPONSE_TIME") {count++; response+=$2};} END{if (count > 0) {print response/count} else {print -1}}' )

    if awk "BEGIN {exit !($RESPONSE > $WARN)}"; then
		STATUS=1
	fi
    
    if awk "BEGIN {exit !($RESPONSE > $CRIT)}"; then
		STATUS=2
	fi

    if [ $RET -gt 0 ]; then
		echo "3 ping_${HOST} ping_response_time=0 UNKNOWN - PING output: $(echo $PING | tr '\n'  ' ')"
	else
		echo "$STATUS ping_${HOST} ping_response_time=$RESPONSE OK - response time: $RESPONSE ms; limites: ($WARN ms/$CRIT ms)"
	fi
done </etc/check_mk/ping_hosts.cfg

