Per determinar la velocitat: /usr/sbin/ndd -get /dev/eri link_speed
Els possibles valors són 0 (10 Mbps), 1 (100 Mbps) i 1000 (1 Gbps) I per determinar la modalitat:/usr/sbin/ndd -get /dev/eri link_mode
Indicant si és half dúplex (0) o full dúplex (1).
Evidentment substituïu /dev/eri per la interfície que correspongui al vostre equip.
Un exemple d'ús:#!/bin/sh
# ndd només pot ser executat per root
if [ "`/usr/bin/id | /usr/bin/cut -c1-5`" != "uid=0" ] ; then
echo "Cal ser root per executar `basename $0`."
exit 1
fi
# Imprimir la capçalera
/usr/bin/echo "Interfície\tVelocitat\t\tDúplex"
/usr/bin/echo "----------\t---------\t\t------"
# Determinar la velocitat i modalitat per a totes les interífice
# actives del sistema
for INTERFACE in `/usr/bin/netstat -i | \
/usr/bin/egrep -v "^Name|^lo0" | /usr/bin/awk '{print $1}' | \
/usr/bin/sort | /usr/bin/uniq`
do
# Les interfícies "ce" són especials
if [ "`/usr/bin/echo $INTERFACE \
| /usr/bin/awk '/^ce[0-9]+/ { print }'`" ] ; then
CE_INT_LINE_NO=`/usr/bin/kstat ce | \
/usr/bin/grep -n $INTERFACE | /usr/bin/awk -F: '{print $1}'`
CE_INT_DUPLEX_LINE_NO=`/usr/bin/expr $CE_INT_LINE_NO + 32`
CE_INT_SPEED_LINE_NO=`/usr/bin/expr $CE_INT_LINE_NO + 34`
DUPLEX=`/usr/bin/kstat ce | \
/usr/bin/awk 'NR == LINE { print $2 }' \
LINE=$CE_INT_DUPLEX_LINE_NO`
case "$DUPLEX" in
1) DUPLEX="half" ;;
2) DUPLEX="full" ;;
esac
SPEED=`/usr/bin/kstat ce | \
/usr/bin/awk 'NR == LINE { print $2 }' \
LINE=$CE_INT_SPEED_LINE_NO`
case "$SPEED" in
10) SPEED="10 Mbps" ;;
100) SPEED="100 Mbps" ;;
1000) SPEED="1 Gbps" ;;
esac
# Les interfície bge també són especials
elif [ "`/usr/bin/echo $INTERFACE \
| /usr/bin/awk '/^bge[0-9]+/ { print }'`" ] ; then
BGE_INT_LINE_NO=`/usr/bin/kstat bge | \
/usr/bin/grep -n $INTERFACE | /usr/bin/awk -F: '{print $1}'`
BGE_INT_DUPLEX_LINE_NO=`/usr/bin/expr $BGE_INT_LINE_NO + 9`
BGE_INT_SPEED_LINE_NO=`/usr/bin/expr $BGE_INT_LINE_NO + 14`
DUPLEX=`/usr/bin/kstat bge | \
/usr/bin/awk 'NR == LINE { print $2 }' \
LINE=$BGE_INT_DUPLEX_LINE_NO`
SPEED=`/usr/bin/kstat bge | \
/usr/bin/awk 'NR == LINE { print $2 }' \
LINE=$BGE_INT_SPEED_LINE_NO`
case "$SPEED" in
10000000) SPEED="10 Mbps" ;;
100000000) SPEED="100 Mbps" ;;
1000000000) SPEED="1 Gbps" ;;
esac
# La resta
else
INTERFACE_TYPE=`/usr/bin/echo $INTERFACE | \
/usr/bin/sed -e \
"s/[0-9]*$//"`INSTANCE=`/usr/bin/echo $INTERFACE | \
/usr/bin/sed -e "s/^[a-z]*//"` \
/usr/sbin/ndd -set /dev/$INTERFACE_TYPE instance $INSTANCE
SPEED=`/usr/sbin/ndd -get /dev/$INTERFACE_TYPE link_speed`
case "$SPEED" in
0) SPEED="10 Mbit/s" ;;
1) SPEED="100 Mbit/s" ;;
1000) SPEED="1 Gbit/s" ;;
esac
DUPLEX=`/usr/sbin/ndd -get /dev/$INTERFACE_TYPE link_mode`
case "$DUPLEX" in
0) DUPLEX="half" ;;
1) DUPLEX="full" ;;
*) DUPLEX="" ;;
esac
fi
/usr/bin/echo "$INTERFACE\t\t$SPEED\t$DUPLEX"
done