xcat-core/xCAT-client/sbin/pping2

78 lines
1.2 KiB
Plaintext
Raw Normal View History

#!/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
if echo $ETH | grep hf
then
nodes=`echo $nodes |sed "s/-hf[0-9]//g"`
nodes=`echo $nodes |sed "s/ /-$ETH /g"`
nodes="$nodes-$ETH"
else
nodes=`echo $nodes |sed "s/ /-$ETH /g"`
nodes="$nodes-$ETH"
fi
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