ibcheckportwidth.in revision 219820
1242275Sneel#!/bin/sh 2242275Sneel 3242275SneelIBPATH=${IBPATH:-@IBSCRIPTPATH@} 4242275Sneel 5242275Sneelfunction usage() { 6242275Sneel echo Usage: `basename $0` "[-h] [-v] [-N | -nocolor] [-G]" \ 7242275Sneel "[-C ca_name] [-P ca_port] [-t(imeout) timeout_ms] <lid|guid> <port>" 8242275Sneel exit -1 9242275Sneel} 10242275Sneel 11242275Sneelfunction green() { 12242275Sneel if [ "$bw" = "yes" ]; then 13242275Sneel if [ "$verbose" = "yes" ]; then 14242275Sneel echo $1 15242275Sneel fi 16242275Sneel return 17242275Sneel fi 18242275Sneel if [ "$verbose" = "yes" ]; then 19242275Sneel echo -e "\\033[1;032m" $1 "\\033[0;39m" 20242275Sneel fi 21242275Sneel} 22242275Sneel 23242275Sneelfunction red() { 24242275Sneel if [ "$bw" = "yes" ]; then 25242275Sneel echo $1 26242275Sneel return 27242275Sneel fi 28242275Sneel echo -e "\\033[1;031m" $1 "\\033[0;39m" 29242275Sneel} 30242275Sneel 31242275Sneelguid_addr="" 32242275Sneelbw="" 33242275Sneelverbose="" 34242275Sneelca_info="" 35242275Sneel 36242275Sneelwhile [ "$1" ]; do 37242275Sneel case $1 in 38242275Sneel -G) 39242275Sneel guid_addr=yes 40242275Sneel ;; 41242275Sneel -nocolor|-N) 42242275Sneel bw=yes 43242275Sneel ;; 44242275Sneel -v) 45242275Sneel verbose=yes 46242275Sneel ;; 47242275Sneel -P | -C | -t | -timeout) 48242275Sneel case $2 in 49242275Sneel -*) 50242275Sneel usage 51242275Sneel ;; 52242275Sneel esac 53242275Sneel if [ x$2 = x ] ; then 54242275Sneel usage 55242275Sneel fi 56242275Sneel ca_info="$ca_info $1 $2" 57242275Sneel shift 58242275Sneel ;; 59242275Sneel -*) 60242275Sneel usage 61242275Sneel ;; 62242275Sneel *) 63242275Sneel break 64242275Sneel ;; 65242275Sneel esac 66242275Sneel shift 67242275Sneeldone 68242275Sneel 69242275Sneelif [ $# -lt 2 ]; then 70242275Sneel usage 71242275Sneelfi 72242275Sneel 73242275Sneelportnum=$2 74242275Sneel 75242275Sneelif [ "$guid_addr" ]; then 76 if ! lid=`$IBPATH/ibaddr $ca_info -G -L $1 | awk '/failed/{exit -1} {print $3}'`; then 77 echo -n "guid $1 address resolution: " 78 red "FAILED" 79 exit -1 80 fi 81 guid=$1 82else 83 lid=$1 84 if ! temp=`$IBPATH/ibaddr $ca_info -L $1 | awk '/failed/{exit -1} {print $1}'`; then 85 echo -n "lid $1 address resolution: " 86 red "FAILED" 87 exit -1 88 fi 89fi 90 91 92text="`eval $IBPATH/smpquery $ca_info portinfo $lid $portnum`" 93rv=$? 94if echo "$text" | awk -v mono=$bw -F '[.:]*' ' 95function blue(s) 96{ 97 if (mono) 98 printf s 99 else if (!quiet) { 100 printf "\033[1;034m" s 101 printf "\033[0;39m" 102 } 103} 104 105# Only check LinkWidthActive if LinkWidthSupported is not 1X 106/^LinkWidthSupported/{ if ($2 != "1X") { next } } 107/^LinkWidthActive/{ if ($2 == "1X") warn = warn "#warn: Link configured as 1X lid '$lid' port '$portnum'\n"} 108 109/^ib/ {print $0; next} 110/ibpanic:/ {print $0} 111/ibwarn:/ {print $0} 112/iberror:/ {print $0} 113 114END { 115 if (err != "") { 116 blue(err) 117 exit -1 118 } 119 if (warn != "") { 120 blue(warn) 121 exit -1 122 } 123 exit 0 124}' 2>&1 && test $rv -eq 0 ; then 125 if [ "$verbose" = "yes" ]; then 126 echo -n "Port check lid $lid port $portnum: " 127 green "OK" 128 fi 129 exit 0 130else 131 echo -n "Port check lid $lid port $portnum: " 132 red "FAILED" 133 exit -1 134fi 135