Blame scripts/ibdatacounts.in

Packit db064d
#!/bin/sh
Packit db064d
Packit db064d
IBPATH=${IBPATH:-@IBSCRIPTPATH@}
Packit db064d
Packit db064d
usage() {
Packit db064d
	echo Usage: `basename $0` "[-h] [-b] [-v] [-G] [-N | -nocolor]" \
Packit db064d
	    "[-C ca_name] [-P ca_port] [-t(imeout) timeout_ms] <lid|guid>" \
Packit db064d
	    "[<port>]"
Packit db064d
	exit -1
Packit db064d
}
Packit db064d
Packit db064d
green() {
Packit db064d
	if [ "$bw" = "yes" ]; then
Packit db064d
		if [ "$verbose" = "yes" ]; then
Packit db064d
			echo $1
Packit db064d
		fi
Packit db064d
		return
Packit db064d
	fi
Packit db064d
	if [ "$verbose" = "yes" ]; then
Packit db064d
		echo -e "\\033[1;032m" $1 "\\033[0;39m"
Packit db064d
	fi
Packit db064d
}
Packit db064d
Packit db064d
red() {
Packit db064d
	if [ "$bw" = "yes" ]; then
Packit db064d
		echo $1
Packit db064d
		return
Packit db064d
	fi
Packit db064d
	echo -e "\\033[1;031m" $1 "\\033[0;39m"
Packit db064d
}
Packit db064d
Packit db064d
guid_addr=""
Packit db064d
bw=""
Packit db064d
verbose=""
Packit db064d
brief=""
Packit db064d
ca_info=""
Packit db064d
suppress_deprecated="no"
Packit db064d
Packit db064d
while [ "$1" ]; do
Packit db064d
	case $1 in
Packit db064d
	-G)
Packit db064d
		guid_addr=yes
Packit db064d
		;;
Packit db064d
	-nocolor|-N)
Packit db064d
		bw=yes
Packit db064d
		;;
Packit db064d
	-v)
Packit db064d
		verbose=yes
Packit db064d
		brief=""
Packit db064d
		;;
Packit db064d
	-b)
Packit db064d
		brief=yes
Packit db064d
		verbose=""
Packit db064d
		;;
Packit db064d
	-P | -C | -t | -timeout)
Packit db064d
		case $2 in
Packit db064d
		-*)
Packit db064d
			usage
Packit db064d
			;;
Packit db064d
		esac
Packit db064d
		if [ x$2 = x ] ; then
Packit db064d
			usage
Packit db064d
		fi
Packit db064d
		ca_info="$ca_info $1 $2"
Packit db064d
		shift
Packit db064d
		;;
Packit db064d
	-S)
Packit db064d
		suppress_deprecated="yes"
Packit db064d
		;;
Packit db064d
	-*)
Packit db064d
		usage
Packit db064d
		;;
Packit db064d
	*)
Packit db064d
		break
Packit db064d
		;;
Packit db064d
	esac
Packit db064d
	shift
Packit db064d
done
Packit db064d
Packit db064d
#default is all ports
Packit db064d
portnum=255
Packit db064d
Packit db064d
if [ $# -lt 1 ]; then
Packit db064d
	usage
Packit db064d
fi
Packit db064d
Packit db064d
if [ "$2" ]; then
Packit db064d
	portnum=$2
Packit db064d
fi
Packit db064d
Packit db064d
if [ "$portnum" = "255" ]; then
Packit db064d
	portname="all"
Packit db064d
else
Packit db064d
	portname=$2
Packit db064d
fi
Packit db064d
Packit db064d
if [ "$guid_addr" ]; then
Packit db064d
	if ! lid=`$IBPATH/ibaddr $ca_info -G -L $1 | awk '/failed/{exit -1} {print $3}'`; then
Packit db064d
		echo -n "guid $1 address resolution: "
Packit db064d
		red "FAILED"
Packit db064d
		exit -1
Packit db064d
	fi
Packit db064d
	guid=$1
Packit db064d
else
Packit db064d
	lid=$1
Packit db064d
	if ! temp=`$IBPATH/ibaddr $ca_info -L $1 | awk '/failed/{exit -1} {print $1}'`; then
Packit db064d
		echo -n "lid $1 address resolution: "
Packit db064d
		red "FAILED"
Packit db064d
		exit -1
Packit db064d
	fi
Packit db064d
fi
Packit db064d
Packit db064d
nodename=`$IBPATH/smpquery $ca_info nodedesc $lid | sed -e "s/^Node Description:\.*\(.*\)/\1/"`
Packit db064d
Packit db064d
if [ "$suppress_deprecated" = "no" ]; then
Packit db064d
echo "*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors --counters\"\n\n" 1>&2
Packit db064d
fi
Packit db064d
Packit db064d
text="`eval $IBPATH/perfquery $ca_info $lid $portnum`"
Packit db064d
rv=$?
Packit db064d
if echo "$text" | awk -v mono=$bw -v brief=$brief -F '[.:]*' '
Packit db064d
function blue(s)
Packit db064d
{
Packit db064d
	if (brief == "yes") {
Packit db064d
		return
Packit db064d
	}
Packit db064d
	if (mono)
Packit db064d
		printf s
Packit db064d
	else if (!quiet) {
Packit db064d
		printf "\033[1;034m" s
Packit db064d
		printf "\033[0;39m"
Packit db064d
	}
Packit db064d
}
Packit db064d
Packit db064d
# Only display Xmit/Rcv Pkts/Data
Packit db064d
Packit db064d
/^# Port counters/ {print}
Packit db064d
Packit db064d
/^CounterSelect/ {next}
Packit db064d
Packit db064d
/AllPortSelect/ {next}
Packit db064d
Packit db064d
/^ib/	{print $0; next}
Packit db064d
/ibpanic:/	{print $0}
Packit db064d
/ibwarn:/	{print $0}
Packit db064d
/iberror:/	{print $0}
Packit db064d
Packit db064d
/^PortSelect/	{ if ($2 != '$portnum') {err = err "error: lid '$lid' port " $2 " does not match query ('$portnum')\n"; exit -1}}
Packit db064d
Packit db064d
$1 ~ "(Xmt|Rcv)(Pkts|Data)" { print $1 ":........................." $2 }
Packit db064d
Packit db064d
END {
Packit db064d
	if (err != "") {
Packit db064d
		blue(err)
Packit db064d
		exit -1
Packit db064d
	}
Packit db064d
	if (warn != "") {
Packit db064d
		blue(warn)
Packit db064d
		exit -1
Packit db064d
	}
Packit db064d
	exit 0
Packit db064d
}' 2>&1 && test $rv -eq 0 ; then
Packit db064d
	if [ "$verbose" = "yes" ]; then
Packit db064d
		echo -n "Error on lid $lid ($nodename) port $portname: "
Packit db064d
		green OK
Packit db064d
	fi
Packit db064d
	exit 0
Packit db064d
else
Packit db064d
	echo -n "Error on lid $lid ($nodename) port $portname: "
Packit db064d
	red FAILED
Packit db064d
	exit -1
Packit db064d
fi