#!/bin/ksh
# Created by Dean Rowswell, IBM, March 20, 2013
# Modified by Dean Rowswell, IBM, April 24, 2013
#    Calculate the USED Processor and Memory values
# List HMC, POWER server, and LPAR info using the HMC
#
# Assumption:
#    Password-less ssh must be setup from this system to the HMC(s) in the HMC_LIST variable

HMC_LIST="hmc1 hmc2"
HMC_USER="hscroot"

for HMC in ${HMC_LIST}
do
	echo "\n================================="
	echo "HARDWARE MANAGEMENT CONSOLE"
	echo "Hostname: ${HMC} / \c"
	ssh ${HMC_USER}@${HMC} "lshmc -v | grep -E 'TM|SE|RM'" | tr -s '\n' ' ' | awk '
	{MODEL = $2 ; SERIAL = $4 ; VERSION = $6};
	END { print "Model: " MODEL "\nSerial: " SERIAL " / Ver: " VERSION}' 
	echo "`date`"
	echo "================================="
	MANAGEDSYS=`ssh ${HMC_USER}@${HMC} "lssyscfg -r sys -F type_model*serial_num"|sort`

	for SYSTEM in ${MANAGEDSYS}
	do
        	echo "\nIBM POWER SYSTEM: ${SYSTEM} / SysFW Ver: \c"
		ssh ${HMC_USER}@${HMC} "lslic -m ${SYSTEM} -F ecnumber:activated_level"|sed 's/:/_/g'|cut -c 3-

		ssh ${HMC_USER}@${HMC} "lshwres -m ${SYSTEM} -r proc --level sys -F installed_sys_proc_units:configurable_sys_proc_units:curr_avail_sys_proc_units"|awk -F: '
		{INSTALL = $1 ; CONFIG = $2 ; AVAIL = $3};
		END { print "   PROC INFO:\t" INSTALL " Installed / " CONFIG " Configurable / " CONFIG-AVAIL " Used / " AVAIL " Available "}'
		
		ssh ${HMC_USER}@${HMC} "lshwres -m ${SYSTEM} -r mem --level sys -F installed_sys_mem:configurable_sys_mem:curr_avail_sys_mem:sys_firmware_mem:mem_region_size" |awk -F: '
		{INSTALL = $1 ; CONFIG = $2 ; AVAIL = $3 ; SYSFW = $4 ; LMB = $5};
		END { print "   MEM INFO:\t" INSTALL/1024 " GB Install / " CONFIG/1024 " GB Config / " (CONFIG-AVAIL)/1024 " GB Used / " AVAIL/1024 " GB Avail / " SYSFW/1024 " GB SysFW / " LMB " MB LMB"}'
		
        	LPARS=`ssh ${HMC_USER}@${HMC} "lssyscfg -r lpar -m ${SYSTEM} -F lpar_id:name:lpar_env:os_version:state"|sed 's/ /_/g'|sort -n`
        	for LPAR in ${LPARS}
        	do
                	printf "      LPAR: %-24s\n" ${LPAR}
        	done
	done
done
