|
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] [-T <threshold_file>]" \
|
|
Packit |
db064d |
"[-s(how_thresholds)] [-N \| -nocolor] [-C ca_name] [-P ca_port]" \
|
|
Packit |
db064d |
"[-t(imeout) timeout_ms] <lid|guid> [<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 |
show_thresholds() {
|
|
Packit |
db064d |
echo "SymbolErrorCounter=$SymbolErrorCounter"
|
|
Packit |
db064d |
echo "LinkErrorRecoveryCounter=$LinkErrorRecoveryCounter"
|
|
Packit |
db064d |
echo "LinkDownedCounter=$LinkDownedCounter"
|
|
Packit |
db064d |
echo "PortRcvErrors=$PortRcvErrors"
|
|
Packit |
db064d |
echo "PortRcvRemotePhysicalErrors=$PortRcvRemotePhysicalErrors"
|
|
Packit |
db064d |
echo "PortRcvSwitchRelayErrors=$PortRcvSwitchRelayErrors"
|
|
Packit |
db064d |
echo "PortXmitDiscards=$PortXmitDiscards"
|
|
Packit |
db064d |
echo "PortXmitConstraintErrors=$PortXmitConstraintErrors"
|
|
Packit |
db064d |
echo "PortRcvConstraintErrors=$PortRcvConstraintErrors"
|
|
Packit |
db064d |
echo "LocalLinkIntegrityErrors=$LocalLinkIntegrityErrors"
|
|
Packit |
db064d |
echo "ExcessiveBufferOverrunErrors=$ExcessiveBufferOverrunErrors"
|
|
Packit |
db064d |
echo "VL15Dropped=$VL15Dropped"
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
get_thresholds() {
|
|
Packit |
db064d |
. $1
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
# Default thresholds
|
|
Packit |
db064d |
SymbolErrorCounter=10
|
|
Packit |
db064d |
LinkErrorRecoveryCounter=10
|
|
Packit |
db064d |
LinkDownedCounter=10
|
|
Packit |
db064d |
PortRcvErrors=10
|
|
Packit |
db064d |
PortRcvRemotePhysicalErrors=100
|
|
Packit |
db064d |
PortRcvSwitchRelayErrors=100
|
|
Packit |
db064d |
PortXmitDiscards=100
|
|
Packit |
db064d |
PortXmitConstraintErrors=100
|
|
Packit |
db064d |
PortRcvConstraintErrors=100
|
|
Packit |
db064d |
LocalLinkIntegrityErrors=10
|
|
Packit |
db064d |
ExcessiveBufferOverrunErrors=10
|
|
Packit |
db064d |
VL15Dropped=100
|
|
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 |
-T)
|
|
Packit |
db064d |
if ! [ -r $2 ]; then
|
|
Packit |
db064d |
echo "Can't use threshold file '$2'"
|
|
Packit |
db064d |
usage
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
get_thresholds $2
|
|
Packit |
db064d |
shift
|
|
Packit |
db064d |
;;
|
|
Packit |
db064d |
-s)
|
|
Packit |
db064d |
show_thresholds
|
|
Packit |
db064d |
exit 0
|
|
Packit |
db064d |
;;
|
|
Packit |
db064d |
-S)
|
|
Packit |
db064d |
suppress_deprecated="yes"
|
|
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 |
-*)
|
|
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 [ "$suppress_deprecated" = "no" ]; then
|
|
Packit |
db064d |
echo "*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors\"\n\n" 1>&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 |
text="`eval $IBPATH/perfquery $ca_info $lid $portnum`"
|
|
Packit |
db064d |
rv=$?
|
|
Packit |
db064d |
if echo $text | grep -q 'AllPortSelect not supported'; then
|
|
Packit |
db064d |
if [ "$verbose" = "yes" ]; then
|
|
Packit |
db064d |
echo -n "Error check on lid $lid ($nodename) port $portname: "
|
|
Packit |
db064d |
green "AllPortSelect not supported"
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
exit 0
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
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 |
BEGIN {
|
|
Packit |
db064d |
th["SymbolErrorCounter"] = '$SymbolErrorCounter'
|
|
Packit |
db064d |
th["LinkErrorRecoveryCounter"] = '$LinkErrorRecoveryCounter'
|
|
Packit |
db064d |
th["LinkDownedCounter"] = '$LinkDownedCounter'
|
|
Packit |
db064d |
th["PortRcvErrors"] = '$PortRcvErrors'
|
|
Packit |
db064d |
th["PortRcvRemotePhysicalErrors"] = '$PortRcvRemotePhysicalErrors'
|
|
Packit |
db064d |
th["PortRcvSwitchRelayErrors"] = '$PortRcvSwitchRelayErrors'
|
|
Packit |
db064d |
th["PortXmitDiscards"] = '$PortXmitDiscards'
|
|
Packit |
db064d |
th["PortXmitConstraintErrors"] = '$PortXmitConstraintErrors'
|
|
Packit |
db064d |
th["PortRcvConstraintErrors"] = '$PortRcvConstraintErrors'
|
|
Packit |
db064d |
th["LocalLinkIntegrityErrors"] = '$LocalLinkIntegrityErrors'
|
|
Packit |
db064d |
th["ExcessiveBufferOverrunErrors"] = '$ExcessiveBufferOverrunErrors'
|
|
Packit |
db064d |
th["VL15Dropped"] = '$VL15Dropped'
|
|
Packit |
db064d |
}
|
|
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)" { next }
|
|
Packit |
db064d |
|
|
Packit |
db064d |
{ if (th[$1] > 0 && $2 >= th[$1])
|
|
Packit |
db064d |
warn = warn "#warn: counter " $1 " = " $2 " \t(threshold " th[$1] ") lid '$lid' port '$portnum'\n"
|
|
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 check 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 check on lid $lid ($nodename) port $portname: "
|
|
Packit |
db064d |
red FAILED
|
|
Packit |
db064d |
exit -1
|
|
Packit |
db064d |
fi
|