#!/bin/ksh
#
# hme0 interface 체크.
#
#
umask 022
stat_()
{
#link_status
# 0 은 link down을 의미
# 1 은 link up을 의미
hme_stat=$(
ndd -get /dev/hme link_status
)
case ${hme_stat} in
'0')
print "작동 하지 않음" ; exit 0 ;;
'1')
print -n "작동중t" ; speed_ ;;
*)
print "hme 디바이스를 찾을수 없음 !" ;;
esac
}
# status한 hme 디바이스 속도 체크
speed_()
{
#link_speed
# 0 은 10 Mbps 로 구동중
# 1 은 100 Mbps 로 구동중
hme_speed=$(
ndd -get /dev/hme link_speed
)
case ${hme_speed} in
'0')
print -n "10 Mbpst" ;;
'1')
print -n "100 Mbpst" ;;
esac
mode_
}
# Stats the inteface for mode.
mode_()
{
#link_mode (read only)
# 0 은 Half-Duplex mode
# 1 은 Full-Duplex mode
hme_mode=$(
ndd -get /dev/hme link_mode
)
case ${hme_mode} in
'0')
print -n "Half-Duplext" ;;
'1')
print -n "Full-Duplext" ;;
esac
auto_neg
}
# This stats the interface and finds whether the nic is
# set to autonegotiate options.
auto_neg()
{
#adv_autoneg_cap
# 0 for off
# 1 for on
hme_neg_mode=$(
ndd -get /dev/hme adv_autoneg_cap
)
case ${hme_neg_mode} in
'0')
print "off" ;;
'1')
print "on" ;;
esac
}
set_100_full_duplex()
{
# 이 부분은 ndd command를 사용하여 speed와 모드를 100Mbps와
# 10Mbps 로 구분하여 놓았다 .
# 100Mbps full-duplex 로 사용할 경우 :
ndd -set /dev/hme instance 0
ndd -set /dev/hme adv_100T4_cap 0
ndd -set /dev/hme adv_100fdx_cap 1
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_10fdx_cap 0
ndd -set /dev/hme adv_10hdx_cap 0
ndd -set /dev/hme adv_autoneg_cap 0
}
set_100_half_duplex()
{
# 10Mbps half-duplex 로 사용할 경우:
ndd -set /dev/hme instance 0
ndd -set /dev/hme adv_100T4_cap 0
ndd -set /dev/hme adv_100fdx_cap 0
ndd -set /dev/hme adv_100hdx_cap 1
ndd -set /dev/hme adv_10fdx_cap 0
ndd -set /dev/hme adv_10hdx_cap 0
ndd -set /dev/hme adv_autoneg_cap 0
}
set_10_full_duplex()
{
# 10Mbps full-duplex 로 사용할 경우 :
ndd -set /dev/hme instance 0
ndd -set /dev/hme adv_100T4_cap 0
ndd -set /dev/hme adv_100fdx_cap 0
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_10fdx_cap 1
ndd -set /dev/hme adv_10hdx_cap 0
ndd -set /dev/hme adv_autoneg_cap 0
}
set_10_half_duplex()
{
# 10Mbps half-duplex로 사용할 경우 :
ndd -set /dev/hme instance 0
ndd -set /dev/hme adv_100T4_cap 0
ndd -set /dev/hme adv_100fdx_cap 0
ndd -set /dev/hme adv_100hdx_cap 0
ndd -set /dev/hme adv_10fdx_cap 0
ndd -set /dev/hme adv_10hdx_cap 1
ndd -set /dev/hme adv_autoneg_cap 0
}
banner_()
{
print "nhme_stat howtosolaris.com "
}
hme_stat()
{
print "n`uname -n` NIC properties."
print "체크 /dev/hme..."
print "StatustSpeedttModettauto-negotiate"
echo "------t-----tt----tt--------------"
stat_ 2>> /dev/null
banner_
}
hme_reconfigure()
{
print "1) 100 Full duplex"
print "2) 100 Half duplex"
print "3) 10 Full duplex"
print "4) 10 Half duplex"
print "*) Abort"
print -n "? "
read answer
case ${answer} in
1)
set_100_full_duplex ;;
2)
set_100_half_duplex ;;
3)
set_10_full_duplex ;;
4)
set_10_half_duplex ;;
*)
print "aborted" ;;
esac
banner_
exit 0
}
got_root()
{
c_uid=$(
id | cut -f2 -d= | cut -f1 -d'('
)
if [ "${c_uid}" != "0" ]
then
print "root로 로그인 하세요."
exit 0
fi
}
case ${1} in
'config')
got_root ; hme_reconfigure ;;
'stat')
got_root ; hme_stat ;;
*)
print "Usage ${0} [ stat | config ]" ; exit 0 ;;
esac