1219820Sjeff#!/bin/sh 2219820Sjeff 3219820SjeffIBPATH=${IBPATH:-@IBSCRIPTPATH@} 4219820Sjeff 5219820Sjefffunction usage() { 6219820Sjeff echo Usage: `basename $0` "[-h] [-b] [-v] [-G] [-N | -nocolor]" \ 7219820Sjeff "[-C ca_name] [-P ca_port] [-t(imeout) timeout_ms] <lid|guid>" \ 8219820Sjeff "[<port>]" 9219820Sjeff exit -1 10219820Sjeff} 11219820Sjeff 12219820Sjefffunction green() { 13219820Sjeff if [ "$bw" = "yes" ]; then 14219820Sjeff if [ "$verbose" = "yes" ]; then 15219820Sjeff echo $1 16219820Sjeff fi 17219820Sjeff return 18219820Sjeff fi 19219820Sjeff if [ "$verbose" = "yes" ]; then 20219820Sjeff echo -e "\\033[1;032m" $1 "\\033[0;39m" 21219820Sjeff fi 22219820Sjeff} 23219820Sjeff 24219820Sjefffunction red() { 25219820Sjeff if [ "$bw" = "yes" ]; then 26219820Sjeff echo $1 27219820Sjeff return 28219820Sjeff fi 29219820Sjeff echo -e "\\033[1;031m" $1 "\\033[0;39m" 30219820Sjeff} 31219820Sjeff 32219820Sjeffguid_addr="" 33219820Sjeffbw="" 34219820Sjeffverbose="" 35219820Sjeffbrief="" 36219820Sjeffca_info="" 37219820Sjeff 38219820Sjeffwhile [ "$1" ]; do 39219820Sjeff case $1 in 40219820Sjeff -G) 41219820Sjeff guid_addr=yes 42219820Sjeff ;; 43219820Sjeff -nocolor|-N) 44219820Sjeff bw=yes 45219820Sjeff ;; 46219820Sjeff -v) 47219820Sjeff verbose=yes 48219820Sjeff brief="" 49219820Sjeff ;; 50219820Sjeff -b) 51219820Sjeff brief=yes 52219820Sjeff verbose="" 53219820Sjeff ;; 54219820Sjeff -P | -C | -t | -timeout) 55219820Sjeff case $2 in 56219820Sjeff -*) 57219820Sjeff usage 58219820Sjeff ;; 59219820Sjeff esac 60219820Sjeff if [ x$2 = x ] ; then 61219820Sjeff usage 62219820Sjeff fi 63219820Sjeff ca_info="$ca_info $1 $2" 64219820Sjeff shift 65219820Sjeff ;; 66219820Sjeff -*) 67219820Sjeff usage 68219820Sjeff ;; 69219820Sjeff *) 70219820Sjeff break 71219820Sjeff ;; 72219820Sjeff esac 73219820Sjeff shift 74219820Sjeffdone 75219820Sjeff 76219820Sjeff#default is all ports 77219820Sjeffportnum=255 78219820Sjeff 79219820Sjeffif [ $# -lt 1 ]; then 80219820Sjeff usage 81219820Sjefffi 82219820Sjeff 83219820Sjeffif [ "$2" ]; then 84219820Sjeff portnum=$2 85219820Sjefffi 86219820Sjeff 87219820Sjeffif [ "$portnum" = "255" ]; then 88219820Sjeff portname="all" 89219820Sjeffelse 90219820Sjeff portname=$2 91219820Sjefffi 92219820Sjeff 93219820Sjeffif [ "$guid_addr" ]; then 94219820Sjeff if ! lid=`$IBPATH/ibaddr $ca_info -G -L $1 | awk '/failed/{exit -1} {print $3}'`; then 95219820Sjeff echo -n "guid $1 address resolution: " 96219820Sjeff red "FAILED" 97219820Sjeff exit -1 98219820Sjeff fi 99219820Sjeff guid=$1 100219820Sjeffelse 101219820Sjeff lid=$1 102219820Sjeff if ! temp=`$IBPATH/ibaddr $ca_info -L $1 | awk '/failed/{exit -1} {print $1}'`; then 103219820Sjeff echo -n "lid $1 address resolution: " 104219820Sjeff red "FAILED" 105219820Sjeff exit -1 106219820Sjeff fi 107219820Sjefffi 108219820Sjeff 109219820Sjeffnodename=`smpquery $ca_info nodedesc $lid | sed -e "s/^Node Description:\.*\(.*\)/\1/"` 110219820Sjeff 111219820Sjefftext="`eval $IBPATH/perfquery $ca_info $lid $portnum`" 112219820Sjeffrv=$? 113219820Sjeffif echo "$text" | awk -v mono=$bw -v brief=$brief -F '[.:]*' ' 114219820Sjefffunction blue(s) 115219820Sjeff{ 116219820Sjeff if (brief == "yes") { 117219820Sjeff return 118219820Sjeff } 119219820Sjeff if (mono) 120219820Sjeff printf s 121219820Sjeff else if (!quiet) { 122219820Sjeff printf "\033[1;034m" s 123219820Sjeff printf "\033[0;39m" 124219820Sjeff } 125219820Sjeff} 126219820Sjeff 127219820Sjeff# Only display Xmit/Rcv Pkts/Data 128219820Sjeff 129219820Sjeff/^# Port counters/ {print} 130219820Sjeff 131219820Sjeff/^CounterSelect/ {next} 132219820Sjeff 133219820Sjeff/AllPortSelect/ {next} 134219820Sjeff 135219820Sjeff/^ib/ {print $0; next} 136219820Sjeff/ibpanic:/ {print $0} 137219820Sjeff/ibwarn:/ {print $0} 138219820Sjeff/iberror:/ {print $0} 139219820Sjeff 140219820Sjeff/^PortSelect/ { if ($2 != '$portnum') {err = err "error: lid '$lid' port " $2 " does not match query ('$portnum')\n"; exit -1}} 141219820Sjeff 142219820Sjeff$1 ~ "(Xmt|Rcv)(Pkts|Data)" { print $1 ":........................." $2 } 143219820Sjeff 144219820SjeffEND { 145219820Sjeff if (err != "") { 146219820Sjeff blue(err) 147219820Sjeff exit -1 148219820Sjeff } 149219820Sjeff if (warn != "") { 150219820Sjeff blue(warn) 151219820Sjeff exit -1 152219820Sjeff } 153219820Sjeff exit 0 154219820Sjeff}' 2>&1 && test $rv -eq 0 ; then 155219820Sjeff if [ "$verbose" = "yes" ]; then 156219820Sjeff echo -n "Error on lid $lid ($nodename) port $portname: " 157219820Sjeff green OK 158219820Sjeff fi 159219820Sjeff exit 0 160219820Sjeffelse 161219820Sjeff echo -n "Error on lid $lid ($nodename) port $portname: " 162219820Sjeff red FAILED 163219820Sjeff exit -1 164219820Sjefffi 165