DiskToLD

OUTPUT=1 DISK_TYPE=1
 * 1) !/bin/ksh
 * 2) if set, one line output per device
 * 1) if set, one line output per device
 * 1) if set, looks up by vxdisk device

x=-1 ; SCCLI_CMD="/usr/sbin/sccli" CTLR=`cfgadm -o show_FCP_dev | egrep -v '(c1|Ap_Id|unconfigured)' | head -1 | awk '{print $1}'` SCCLI_DEV=`$SCCLI_CMD -l | awk '{print $1}'` ; SCCLI="$SCCLI_CMD $SCCLI_DEV"

PARTITIONS=/var/tmp/partitions.txt PORT_WWNS=/var/tmp/port_wwns.txt LUNS=/var/tmp/luns.txt $SCCLI show partitions > $PARTITIONS 2> /dev/null $SCCLI show port-wwns > $PORT_WWNS 2> /dev/null $SCCLI show luns > $LUNS 2> /dev/null
 * 1) Gather SCCLI info into files

if [ $DISK_TYPE -eq 1 ] ; then set -A VXDEVICES `vxdisk list | grep SUN35100 | awk '{print $1}'` DEVICES=`echo ${VXDEVICES[*]} | xargs vxdisk list | egrep "^$CTLR" | awk '{print $1}'` else DEVICES=`iostat -En | grep "^$CTLR" | awk '{print $1}' | sed 's/Soft/s2/g'` fi
 * 1) Lookup Disk Device

if [ $OUTPUT -eq 1 ] ; then echo printf "%-6s %-25s  %-12s  %-11s  %-9s\n" "LD/LV" "Sun Disk Device" "ID-Partition" "VXDisk" "Size" printf "%-6s %-25s  %-12s  %-11s  %-9s\n" "-" "---" "" "--" "" fi

for i in $DEVICES ; do       LUXADM_DISPLAY="luxadm display /dev/rdsk/$i" LUX_DISP_OUT=`$LUXADM_DISPLAY | grep '\/devices' | head -1`
 * 1) Examine each Disk Device

# if luxadm doesn't output anything re-loop if [ -z $LUX_DISP_OUT ] ; then (( x=x+1 )); continue; fi

# Get WWPN (using 'typeset -u' to make uppercase) typeset -u WWPN ; WWPN=`echo $LUX_DISP_OUT \ | awk -F, '{print substr($(NF-2),length($(NF-2)) - 15,length($(NF-2)))}'`

# Get LUN number LUN=`echo $LUX_DISP_OUT | awk -F, '{print $(NF-1)}' | awk -F\: '{print $1}'` LUN_DEC=`echo $((16#$LUN))`

# Match WWPN to port and channel on 3510 PT_CH=`grep $WWPN $PORT_WWNS| awk '{print substr($0,1,6)}'` PT_CH_LUN=`echo "$PT_CH\c";printf "%+4s" $LUN_DEC`

# Get ID-Partition and ld#-## info PART_ID=`grep "$PT_CH_LUN" $LUNS | head -1 | awk '{print $5}'` LD=`grep $PART_ID $PARTITIONS | awk '{print $1}'` LD_SIZE=`grep $PART_ID $PARTITIONS | awk '{print $3}'`

if [ $OUTPUT -eq 1 ] ; then printf "%-6s %-25s  %-12s  %-11s  %9s\n" $LD $i $PART_ID ${VXDEVICES[$(( x=x+1 ))]} $LD_SIZE else echo "$i: \c"; $LUXADM_DISPLAY | grep '\/devices' | awk 'NR>1{print $1}' echo "WWPN: $WWPN" echo " LUN: $LUN (hex) $LUN_DEC (dec)" echo "ID-Partition: $PART_ID" echo "LD: $LD" echo "Size: $LD_SIZE" fi
 * 1) PRINTING: if OUTPUT=1 all in one line per device

done rm $PARTITIONS $PORT_WWNS $LUNSRTITIONS $PORT_WWNS $LUNS 2> /dev/null