#! /bin/bash

#frontend='comsics'
#frontend='anicca'
#frontend='10.205.19.225
#frontend='anicca.usm.my'
frontend='10.1.1.1'

percentage=15 ## default %cpu usage deemed as 'busy'

rm -rf check1.DAT
#rlh=$(rocks list host | awk 'BEGIN {FS = ":"} NR>1{print $1}')

rlh=$(ssh -X -Y $frontend " rocks list host | awk 'NR > 1 {print $1}' " | awk ' BEGIN {FS = ":"} NR > 1 {print $1}')

#rlh=$(cat /share/apps/local/bin/hostlist)

freenodecount=0
for i in $rlh
do
#checkping=$(ping -q -c1 $i | awk 'NR==4 {print $3}' | awk '{print NF}')
echo checking $i
checkping=$(ping -q -c1 -W 1 $i | awk 'NR==4 {print $4}')

if [ $checkping -eq 0 ]
then
echo $i is not responding after being pinged for 1 second
fi


if [ $checkping -eq 1 ]
then

#if [ $i != 'compute-0-0' ]
#then
#echo checking $i
#	ssh -X -Y $i 'ps -eo pcpu,pid,user,args | sort -k 1 -r | head -5' | awk 'NR>1{print $1}' > /tmp/temp.dat
	ssh -X -Y -o ConnectTimeout=1 $i 'ps -eo pcpu,pid,user,args | sort -k 1 -r | head -5' | awk 'NR>1{print $1," ",$3}' > ~/temp2.dat
	
        user=$(cat ~/temp2.dat | awk 'NR==1 {print $2}')
	cat ~/temp2.dat | awk '{print $1}' > ~/temp3.dat
	cp ~/temp3.dat ~/temp.dat

#        tempdat=$(ssh -X -Y $i 'ps -eo pcpu,pid,user,args | sort -k 1 -r | head -5' | awk 'NR>1{print $1}')
#        echo 'tempdat = ' $tempdat
        sum=$(awk '{ t += $1 }END{print t}' ~/temp.dat)
	rm ~/temp.dat ~/temp2.dat ~/temp3.dat
#        sum=$(echo tempdata | awk '{ t += $1 }END{print t}')
#	echo cpu usage in $i is $sum

	int=${sum/\.*}
	if [ "$int" -gt "$percentage" ]; then
#		user=$(ps -eo pcpu,pid,user,args | sort -k 1 -r | head -5 | awk 'NR==2 {print $3}')
                echo $i is occupied. cpu usage is $sum '%'. Main user is $user
	elif [ "$int" -le "$percentage" ]; then
                freenodecount=$(( $freenodecount + 1 ))
#		user=$(ps -eo pcpu,pid,user,args | sort -k 1 -r | head -5 | awk 'NR==2 {print $3}')
                echo $i is free. cpu usage is $sum '%'. Main user is $user
#                echo $i > machinefile$freenodecount
                freenode[$freenodecount]=$i
#                export "Freenode$freenodecount"="${freenode[$freenodecount]}"
#                echo see me? Freenode$freenodecount  see me? "${freenode[$freenodecount]}"
                echo 'freenode['$freenodecount'] is ' "${freenode[$freenodecount]}"
	fi
	echo ' '
fi
#fi
done

#echo 'Number of compute node free to use is ' $freenodecount
# echo  $freenodecount > freenodecount.DAT

echo Free nodes are
for (( num=1; num<=$freenodecount; num++ ))
do 
echo "${freenode[$num]}"
# echo "${freenode[$num]}" > "${freenode[$num]}"
done
echo 'Number of compute node free to use is ' $freenodecount
# Note: 
# $freenodecount and "${freenode[$num]}" are now ready to be used. $num varies from 1 to $freenodecount.:wq
