#!/bin/bash

ADMIN=admin
PASS=admin

# Export system logs and check whether it with any error message to those with BMC platforms.

#conversation dialog for deleting logs or not
echo "path of logs are under "/home/export_sys_log_with_bmc_*.log""
read -p "Do you want to delete all logs before you run this script? 'y' or 'n'" choice

if [ "${choice}" == "y" ] || [ "${choice}" == "Y" ]; then

#delete all logs
	echo -e "Delete log file(s)...\n"
	rm -rf /home/*_ipmitool_log_with_bmc_*.log

elif [ "${choice}" == "n" ] || [ "${choice}" == "N" ]; then

#do nothing
	sleep 1

fi

function ipmitool_get {
#get time in integer
time=`date +%d-%m`
date=`date`
uptime=`uptime`

#display log file name
logFile="/home/${time}_ipmitool_log_with_bmc_${IP}.log"
echo -e "This new log file name would be '$logFile'\n" 

echo "Generate log file $logFile"

END=13
#export logs by following command lines
c[0]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel time get"
c[1]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel"
c[2]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel elist"
c[3]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel -v elist"
c[4]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel list"
c[5]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sdr elist"
c[6]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sdr -v"
c[7]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sensor"
c[8]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS lan print"
c[9]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS fru print"
c[10]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS fru print -v"
c[11]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS mc info"
c[12]="ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS hpm check"

##log info in log file
#log Current Date and Time
echo -e "--- Beginning of log ---\n" >> $logFile 2>&1
echo -e "Current Date and Time." >> $logFile 2>&1
echo -e ${date}"\n" >> $logFile 2>&1

#log System operation time since last boot
echo -e "System operation time since last boot" >> $logFile 2>&1
echo -e ${uptime}"\n" >> $logFile 2>&1


for ((i=0; i<=$END; i++))
do
	cmd1=${c[$i]}" >> $logFile 2>&1"
	cmd2=${c[$i]}
	echo $i":# "$cmd2
	echo "# "$cmd2 >> $logFile 2>&1
	bash -c "$cmd1"
	if [ "$i" != "$END" ]; then
		echo -e "\n\n" >> $logFile 2>&1
	else
		count=$(ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel list | wc -l)
		echo -e "ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel list | wc -l" >> $logFile 2>&1
		echo -e "The ${IP} Current Sel logs are ${count}.\n" >> $logFile 2>&1
		echo "--- End of log ---" >> $logFile 2>&1
	fi
done

echo -e "Log file $logFile has been generated.\n"
}


while read IP
do
  ipmitool_get

if [ "$count" -gt "4095" ]; then
       ipmitool -I lanplus -H $IP -U $ADMIN -P $PASS sel clear
fi

done <iplist

