#!/usr/bin/ksh # # vgfiberswitch.ksh # Steven "Shmuel" Protter steven.protter@hcl.com # . /var/adm/bin/.scriptenv PATH=/opt/fcms/bin:${PATH} #### # binary location # LS=/usr/sbin/lanscan IS=/usr/sbin/ioscan NW=/usr/sbin/nwmgr IF=/usr/sbin/ifconfig FU=/opt/fcms/bin/fcmsutil LL=/usr/sbin/linkloop LA=/usr/sbin/lanadmin #### # spreadsheet functions # # set file location SSOF="${REP_DIR}/${hn}.backplane.spreadsheet.csv" # Initialize the output file > ${SSOF} spreadsheet_write() { dataf=$1 host=${hn} syshard=$2 rxcomplex=$3 rxchassis=$4 rxslot=$5 rxport=$6 f7=$7 f8=$8 f9=$9 f10=$10 ## f11=$11 ## f12=$12 echo "\"${dataf}\",\"${host}\",\"${syshard}\",\"${rxcomplex}\",\"${rxchassis}\",\"${rxslot}\",\"${rxport}\",\"${f7}\",\"${f8}\",\"${f9}\",\"${f10}\"" >> ${SSOF} ### end of function ### } echo "m ${modinfo}" echo "ml ${modinfol}" echo "--------------------------------------------------------------------" if [ "${modinfo}" = "rx8640" ] ||[ "${modinfo}" = "rx7640" ] then echo "Valid model found: ${modinfo}" else echo "INVALID model found: ${modinfo}" echo "Exiting return code 1 ........." exit 1 fi ## determine number of multifunction cards to expect ncards=$(olrad -n); olrad -q| awk '/Yes/{ printf "%s %s\n",$1,$2 }' | while read -r slot hwp do echo "${slot} ${hwp}" ## 8-0-1-6 3/0/4/0/0/0 ## 3/0/6/0/0/0/0/4/0/0/1 complex=$(echo ${slot} | awk -F- '{ print $1 }'); rslot=$(echo ${slot} | awk -F- '{ print $(NF) }'); rchas=$(echo ${slot} | awk -F- '{ print $(NF-1) }'); echo "Complex : ${complex} .." echo "Real slot: ${rslot} .." echo "Real chas: ${rchas} .." echo "Nework info:" ## network info ${LS} | grep "${hwp}" | awk '{ printf "%s %s %s %s %s\n",$1,$2,$3,$4,$5 }' | while read -r fwp mad nn st ln do ##echo "hwp: ${fwp} mad: ${mad} netnum: ${nn} status ${st} lan:${ln}" rportraw=$(echo ${fwp} | awk -F\/ '{ print $(NF)}'); if [ "${rportraw}" = "1" ];then rport="B";fi if [ "${rportraw}" = "0" ];then rport="A";fi ipady=$(ifconfig ${ln} |awk '/inet/{print $2}'); last1=$(lanadmin -g $nn |awk '/Administration Status/{ print $NF}'); last2=$(lanadmin -g $nn |awk '/Operation Status/{ print $NF}'); echo "info ${ln}: ${ipady} ${fwp} ${mad} ${st} ${last1} ${last2} ${rport}" ss_data="${ln}: ${ipady} ${fwp} ${mad} ${st} ${last1} ${last2} ${rport}" spreadsheet_write ${hn} ${fwp} ${complex} ${rchas} ${rslot} ${rport} ${mad} ${ss_data} done echo "HBA info:" ioscan -fnCfc -H ${hwp} | awk '/dev/{print $NF}' |while read -r dv do nnwwn=$(${FU} ${dv}|awk '/N_Port Node World Wide Name/{print $NF}'); npwwn=$(${FU} ${dv}|awk '/N_Port Port World Wide Name/{print $NF}'); spwwn=$(${FU} ${dv}|awk '/Switch Port World Wide Name/{print $NF}'); snwwn=$(${FU} ${dv}|awk '/Switch Node World Wide Name/{print $NF}'); drst=$(${FU} ${dv}|awk '/Driver state/{print $NF}'); fchw=$(${FU} ${dv}|awk '/Hardware Path is/{print $NF}'); hportraw=$(echo ${fchw} | awk -F\/ '{ print $(NF)}'); if [ "${hportraw}" = "1" ];then hport="B";fi if [ "${hportraw}" = "0" ];then hport="A";fi echo "hba dev: ${dv}" echo "drviver state: ${drst}" echo "fcms device/port: ${fchw} ${hport}" echo "WWN sys: ${nnwwn}" echo "WWP sys: ${npwwn}" echo "Switch port: ${spwwn}" echo "Switch node: ${snwwn}" spreadsheet_write ${nnwwn} ${fchw} ${complex} ${rchas} ${rslot} ${hport} spreadsheet_write ${npwwn} ${fchw} spreadsheet_write ${spwwn} ${fchw} spreadsheet_write ${snwwn} ${fchw} done echo "--------------------------------------------------------------------" done exit N_Port Node World Wide Name = 0x5001438001314b0d N_Port Port World Wide Name = 0x5001438001314b0c Switch Port World Wide Name = 0x208b0027f8a09ff8 Switch Node World Wide Name = 0x10000027f8a09ff8 Driver state = ONLINE Hardware Path is = 2/0/6/0/0/0/0/4/0/0/0 Administration Status (value) = up(1) Operation Status (value) = up(1) 2/0/14/0/0/0/0/2/0/0/0 0x001E0B5186F8 2 UP lan2 snap2 3 ETHER Yes 119 2/0/14/0/0/0/0/2/0/0/1 0x001E0B5186F9 3 UP lan3 snap3 4 ETHER Yes 119 8-0-0-5 2/0/6/0/0/0 2/0/6/0/0/0/0/2/0/0/0 0x001E0B519628 0 UP lan0 snap0 1 ETHER Yes 119 2/0/6/0/0/0/0/2/0/0/1 0x001E0B519629 1 UP lan1 snap1 2 ETHER Yes 119 PCI-Express Slots Information ----------------------------- Driver(s) Capable Slot Path Link Max Max Link Pwr Occu Susp OLAR OLD Mode Spd Link Link Width Spd Width 8-0-0-4 2/0/14/0/0/0 2.5 2.5 x8 x8 On Yes No Yes Yes PCIe 8-0-0-5 2/0/6/0/0/0 2.5 2.5 x8 x8 On Yes No Yes Yes PCIe nargs=$# if [ ${nargs} -ne 1 ];then echo "1 argument required volume group name ex vgfiberswitch.ksh vg00";exit;fi vg=$1 vgdisplay -v ${vg} | awk '/PV Name/{print $3}' | while read -r dv do #lssf ${dv} if [ "${OSV}" = "B.11.23" ] then iopath=$(lssf ${dv} | awk '{ print $15}' | awk -F. '{print $1}'); port=$(ioscan -FnCfc | grep "$iopath" |awk -F: '{print $NF}'); dev="/dev/fcd${port}" echo "device is ${dev}" fcmsutil ${dev} | egrep "World Wide Name|Driver state" fi if [ "${OSV}" = "B.11.31" ] then ioscan -m dsf ${dv} | awk '/dsk/{print $NF'} |while read -r ldv do iopath=$(lssf ${ldv} | awk '{ print $15}' | awk -F. '{print $1}'); port=$(ioscan -FnCfc | grep "$iopath" |awk -F: '{print $19}'); dev="/dev/fcd${port}" echo "device is ${dev}" fcmsutil ${dev} | egrep "World Wide Name|Driver state" done ## iopath=$(lssf ${dv} | awk '{ print $6}'); ## lpath=$(ioscan -m lun -F |grep ${iopath} | awk -F: '{print $11}' | awk -F. '{print $1}'); ## port=$(ioscan -FnCfc | grep "$lpath" |awk -F: '{print $19}'); ## echo "port found: ${port}" fi done exit disk:172:64000/0xfa00/0x1ba:esdisk:CLAIMED:DEVICE:3:22:online:HITACHI OPEN-V :0/2/1/0/4/0.0x50060e80166f4203.0x4000000000000000:0/4/1/0/4/0.0x50060e80166f4213.0x4000000000000000: igush0:root > ioscan -m lun -F | grep 64000/0xfa00/0x1ba | wc -l 1 aigush0:root > aigush0:root > lssf /dev/disk/disk172 esdisk section 0 at address 64000/0xfa00/0x1ba /dev/disk/disk172 # root@dcecpa1# lssf /dev/dsk/c24t0d0s2 | awk '{ print $15}' 1/0/2/1/0/4/0.1.128.0.0.0.0 pci:wsio:F:T:F:-1:67:4294967295:fc:fcd:1/0/2/1/0/4/0:16 119 36 34 0 165 102 64 :0:root.cell.sba.lba.PCItoPCI.fcd:fcd:CLAIMED:INTERFACE:HP AD194-60001 PCI/PCI-X Fibre Channel 2-port 4Gb FC/2-port 1000B-T Combo Adapter (FC Port 1):0