#!/bin/sh
#egan@us.ibm.com
#(C)IBM Corp
#

SERIAL=""
ETH=""
Q=0
while [ -n "$1" ]
do
    case "$1" in
          -q)
	      Q=1
	      shift
	      ;;
	  -s)
	      SERIAL="on"
	      shift
	      ;;
	  -i)
	      shift
	      ETH=$1
	      shift
	      ;;
	   *)
	      LEFT="$LEFT $1"
	      shift
	      ;;
	esac
done

if [ -n "$LEFT" ]
then
   set $LEFT
fi

nodes=`echo $1 |sed "s/,/ /g"`
if [ -n "$ETH" ];  then
    nodes=`echo $nodes |sed "s/-hf[0-9]//g"`
    nodes=`echo $nodes |sed "s/ /-$ETH /g"`
    nodes="$nodes-$ETH"
fi

which fping >/dev/null 2>&1
if [ "$?" = "0" ]; then
    if [ "$Q" = "1" ]; then
       fping $nodes 2>&1 | grep -v 'is alive' | sed "s/ is unreachable/: noping/"
    else
       fping $nodes 2>&1 | sed "s/ is alive/: ping/" | sed "s/ is unreachable/: noping/"
    fi
else
    JOBS=""
    for i in $nodes
    do
       (if ping -c1 $i >/dev/null 2>&1
	then
	    if [ "$Q" = "0" ]; then
		echo "$i: ping"
	    fi
	else
	    echo "$i: noping"
	fi) &
        if [ -z "$SERIAL" ]; then
	    JOBS="$JOBS $!"
	else
	    wait $!
	fi
    done
    wait
fi
exit 0