|
Packit |
db064d |
#!/bin/sh
|
|
Packit |
db064d |
|
|
Packit |
db064d |
IBPATH=${IBPATH:-/usr/local/sbin}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
usage() {
|
|
Packit |
db064d |
echo Usage: `basename $0` "[-h] [<topology-file> | -y mkey" \
|
|
Packit |
db064d |
"-C ca_name -P ca_port -t timeout_ms]"
|
|
Packit |
db064d |
exit -1
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
topofile=""
|
|
Packit |
db064d |
ca_info=""
|
|
Packit |
db064d |
mkey="0"
|
|
Packit |
db064d |
|
|
Packit |
db064d |
while [ "$1" ]; do
|
|
Packit |
db064d |
case $1 in
|
|
Packit |
db064d |
-h | --help)
|
|
Packit |
db064d |
usage
|
|
Packit |
db064d |
;;
|
|
Packit |
db064d |
-y | --m_key)
|
|
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 |
shift
|
|
Packit |
db064d |
mkey="$1"
|
|
Packit |
db064d |
;;
|
|
Packit |
db064d |
-P | --Port | -C | --Ca | -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 |
if [ "$topofile" ]; then
|
|
Packit |
db064d |
usage
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
topofile="$1"
|
|
Packit |
db064d |
;;
|
|
Packit |
db064d |
esac
|
|
Packit |
db064d |
shift
|
|
Packit |
db064d |
done
|
|
Packit |
db064d |
|
|
Packit |
db064d |
if [ "$topofile" ]; then
|
|
Packit |
db064d |
netcmd="cat $topofile"
|
|
Packit |
db064d |
else
|
|
Packit |
db064d |
netcmd="$IBPATH/ibnetdiscover -y $mkey $ca_info"
|
|
Packit |
db064d |
fi
|
|
Packit |
db064d |
|
|
Packit |
db064d |
text="`eval $netcmd`"
|
|
Packit |
db064d |
rv=$?
|
|
Packit |
db064d |
echo "$text" | awk '
|
|
Packit |
db064d |
/^Switch/ {
|
|
Packit |
db064d |
l=$0
|
|
Packit |
db064d |
desc=substr(l, match(l, "#[ \t]*")+RLENGTH)
|
|
Packit |
db064d |
pi=match(desc, "port 0.*")
|
|
Packit |
db064d |
pinfo=substr(desc, pi)
|
|
Packit |
db064d |
desc=substr(desc, 1, pi-2)
|
|
Packit |
db064d |
type="base port 0"
|
|
Packit |
db064d |
ti=match(desc, type)
|
|
Packit |
db064d |
if (ti==0) {
|
|
Packit |
db064d |
type="enhanced port 0"
|
|
Packit |
db064d |
ti=match(desc, type)
|
|
Packit |
db064d |
if (ti!=0)
|
|
Packit |
db064d |
desc=substr(desc, 1, ti-2)
|
|
Packit |
db064d |
} else
|
|
Packit |
db064d |
desc=substr(desc, 1, ti-2)
|
|
Packit |
db064d |
if (ti==0)
|
|
Packit |
db064d |
print $1 "\t: 0x" substr($3, 4, 16) " ports " $2 " "\
|
|
Packit |
db064d |
desc " " pinfo
|
|
Packit |
db064d |
else
|
|
Packit |
db064d |
print $1 "\t: 0x" substr($3, 4, 16) " ports " $2 " "\
|
|
Packit |
db064d |
desc " " type " " pinfo}
|
|
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 |
exit $rv
|