#! /bin/ksh
#
# Checks for SPC2 flag settings on DMX conencted hosts
#
##########################################################

# Set up variables
TMPDIR=/var/tmp
EXPORTDIR=/export/home/san/ac/spc2_report
#EXPORTDIR=/var/opt/san/ac
SIDLIST=${TMPDIR}/sidlist
FULLSIDLIST=${TMPDIR}/fullsidlist

pbrun symcfg list | grep Local | grep DMX | awk '{print $1}' > ${FULLSIDLIST}

SIDIN=$1
if [ "${SIDIN}" = "" ]
then
	print "Usage: check_spc2-dmx.ksh <SID>|ALL"
	exit 1
elif [ "${SIDIN}" = "ALL" ]
then
	cat ${FULLSIDLIST} | cut -c9-12 > ${SIDLIST}
else
	print ${SIDIN} > ${SIDLIST}
fi

ALIASFILE=${TMPDIR}/alias
WWNFILE=${TMPDIR}/wwn
FLAGSFILE=${TMPDIR}/flags
SPC2FILE=${TMPDIR}/spc2
FAFILE=${TMPDIR}/fa
SIDFILE=${TMPDIR}/sids

# Start loop

for SID in `cat ${SIDLIST}`
do

# Print to screen
print "Beginning processing of DMX${SID}"
FULLSID=`grep ${SID} ${FULLSIDLIST} | awk '{print $1}'`

# Setfile names
LISTDB=${TMPDIR}/${SID}_listdb
HEADER=${TMPDIR}/${SID}_header
OUTFILE=${TMPDIR}/${SID}_out
SORTEDOUT=${TMPDIR}/${SID}_out_sorted
CSVOUTFILE=${EXPORTDIR}/${SID}_spc2_report.csv

# Blank out files for looping
cat /dev/null > ${ALIASFILE}
cat /dev/null > ${WWNFILE}
cat /dev/null > ${FLAGSFILE}
cat /dev/null > ${SPC2FILE}
cat /dev/null > ${FAFILE}
cat /dev/null > ${SIDFILE}

# Setup file header
print "SymmID, FA, HBA Alias, WWN, Flag set?, SPC2," > ${HEADER}

# List database
pbrun symmaskdb -sid ${SID} list database -v > ${LISTDB}

# Parse file
while read LINE
do
	IDENT=`print ${LINE} | awk '{print $1}'| cut -d "_" -f 1`
	case ${IDENT} in
	Director)
		IDENT2=`print ${LINE} | awk '{print $2}'`
		if [ "${IDENT2}" = "Identification" ]
		then
			DIR=`print ${LINE} | awk '{print $4}'`
		elif  [ "${IDENT2}" = "Port" ]
		then
			PORT=`print ${LINE} | awk '{print $4}'`
		fi
		;;
	Originator)
		WWN=`print ${LINE} | awk '{print $5}'`
		;;
	User-generated)
		ALIAS=`print ${LINE} | awk '{print $4}'`
		;;
	Port)
		FLAGSET=`print ${LINE} | awk '{print $5}'`
		if [ "${FLAGSET}" = "No" ]
		then
			SPC2="N/A"
		fi
		;;
	Enabled)
		FLAG=`print ${LINE} | awk '{print $3}' | cut -d "_" -f 1`
		if [ "${FLAG}" = "SPC2" ]
		then
			SPC2=Yes
		else
			SPC2=Other
		fi
		;;
	SPC2)
		SPC2=Yes
		;;
	Devices)
		print "${WWN}," >> ${WWNFILE}
		print "${ALIAS}," >> ${ALIASFILE}
		print "${FLAGSET}," >> ${FLAGSFILE}
		print "${SPC2}," >> ${SPC2FILE}
		print "${DIR}${PORT}," >> ${FAFILE}
		print "${FULLSID}," >> ${SIDFILE}
		;;
	esac
done<${LISTDB}

paste ${SIDFILE} ${FAFILE} ${ALIASFILE} ${WWNFILE} ${FLAGSFILE} ${SPC2FILE} > ${OUTFILE}
sort ${OUTFILE} > ${SORTEDOUT}
cat ${HEADER} ${SORTEDOUT} > ${CSVOUTFILE}

# Print to screen
print "End of processing of DMX${SID}"
print

# End loop
done
