#!/bin/bash
#
#  ESMPRO ServerAgentService
#    pp_install Version: 1.19 (2019/05/28)
#

MACHARCH=""
DMACHARCH=""
SATYPE=""

RPCBINDPKG=""
CURRENTDIR=""
KERNEL=""
DISTRIBUTION=""

RHEL6="RHEL6"
RHEL7="RHEL7"

RHEL68="RHEL6.8/"
RHEL67="RHEL6.7/"
RHEL72="RHEL7.2/"
RHEL73="RHEL7.3/"
OL7UEKR4="OL7UEKR4/"

SERIES1="725 726 727 728 729 72a 72b 72c 747 748 749 74a 74b"
SERIES2="6ea 6eb"
SERIES3="759 75a 75b 75c 75d"
SERIES4="752 751 753 792 754 7b5 7b4 7b7 7b6 7b8"
SERIES5="7a6 7a7 7a8 7a9 796 797 798 799 79a 79b 79c 79d 79e 79f"
ESMROOT="/opt/nec/esmpro_sa"
ESMREGALIVELEVEL="registry/HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/SERVICES/ESMSYSTEMMANAGEMENTSERVICE/PARAMETERS"

SYSTEMID=0
IMLFLAG=0
PYTHONMODULEPATH=""
PYTHONMODULEPATHDEFAULT="/opt/nec/esmpro_sa/python-2.7"


usage()
{
        echo "Usage: $0 [-s OFF] [-p OFF] [-l lang] [-d directory]"
        echo "-s OFF   This script do not change the setting."
        echo "-p OFF   Esmpro-*srv packages does not install."
        echo "-l lang  ESMPRO ServerAgentService run in lang."
        echo "-d directory  This is Python2.7's install directory."
        echo "              On RHEL6 series, in order to install python module" 
        echo "              under the same directory of Python2.7,"
        echo "              this directory should to be set."
        echo "              The default directory is /opt/nec/esmpro_sa/python-2.7"
        exit 0
}

#check dmidecode pkg
checkdmi(){
	if [ ! -f /usr/sbin/dmidecode ]; then
		/bin/echo "Install dmidecode package to execute this script."
		exit 1
	fi
}
checkkernel(){
	
	if /bin/uname -r 2>/dev/null|/bin/grep "2\\.6\\.32-.*el6" >/dev/null 2>&1 ; then 
		DISTRIBUTION="${RHEL6}"
	elif /bin/uname -r 2>/dev/null|/bin/grep "3\\.10\\.0-.*el7" >/dev/null 2>&1 ; then 
		DISTRIBUTION="${RHEL7}"
	elif /bin/uname -r 2>/dev/null|/bin/grep ".*el7uek" >/dev/null 2>&1 ; then
		DISTRIBUTION="${RHEL7}" 
 	fi 

	if /bin/uname -r 2>/dev/null|/bin/grep "2\\.6\\.32-573\\..*el6" >/dev/null 2>&1 ; then
		KERNEL="${RHEL67}"
	elif /bin/uname -r 2>/dev/null|/bin/grep "2\\.6\\.32-642\\..*el6" >/dev/null 2>&1 ; then
		KERNEL="${RHEL68}"
	elif /bin/uname -r 2>/dev/null|/bin/grep "3\\.10\\.0-327\\..*el7" >/dev/null 2>&1 ; then
		KERNEL="${RHEL72}"
	elif /bin/uname -r 2>/dev/null|/bin/grep "3\\.10\\.0-514\\..*el7" >/dev/null 2>&1 ; then
		KERNEL="${RHEL73}"
	elif /bin/uname -r 2>/dev/null|/bin/grep "4\\.1\\.12-.*el7uek" >/dev/null 2>&1 ; then
		 KERNEL="${OL7UEKR4}"
	fi
}

checkdependpkg(){
	CIM=`/bin/rpm -qa 2>/dev/null|/bin/grep "cim-schema-[0-9]" 2>/dev/null`
	if [ "$IMLFLAG" = "0" ] && [ "$SATYPE" = "type3" ] ; then
		IPMIPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "OpenIPMI-[0-9]" 2>/dev/null`
	else
		IPMIPKG="NULL"
	fi
	
	if [ "$IMLFLAG" = "1" ] && [ "$DISTRIBUTION" = "$RHEL7" ] ; then
		PYTHONLIBS=`/bin/rpm -qa 2>/dev/null|/bin/grep "python-libs-[0-9]" 2>/dev/null`
		PLYPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "python-ply-[0-9]" 2>/dev/null`
		SIXPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "python-six-[0-9]" 2>/dev/null`
		DECORATORPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "python-decorator-[0-9]" 2>/dev/null`
		JSONPOINTERPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "python-jsonpointer-[0-9]" 2>/dev/null`
		SETUPTOOLSPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "python-setuptools-[0-9]" 2>/dev/null`
	else	
		PYTHONLIBS="NULL"
		PLYPKG="NULL"
		SIXPKG="NULL"
		DECORATORPKG="NULL"
		JSONPOINTERPKG="NULL"
		SETUPTOOLSPKG="NULL"
	fi

	SNMPPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "net-snmp-[0-9]" 2>/dev/null`

	SLANGPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "slang-[0-9]" 2>/dev/null`
	NEWTPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "newt-[0-9]" 2>/dev/null`
	RPCBINDPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "rpcbind" 2>/dev/null`
	
	if [ "$DISTRIBUTION" = "$RHEL6" ]; then
		COMPATPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "compat-libstdc++-33" 2>/dev/null`
	else
		COMPATPKG="NULL"
	fi

	BASE=`/bin/rpm -qa 2>/dev/null|/bin/grep "sblim-cmpi-base-[0-9]" 2>/dev/null`
	HELPER=`/bin/rpm -qa 2>/dev/null|/bin/grep "sblim-indication_helper-[0-9]" 2>/dev/null`
	WBEMCLI=`/bin/rpm -qa 2>/dev/null|/bin/grep "sblim-wbemcli-[0-9]" 2>/dev/null`
	CLIENT=`/bin/rpm -qa 2>/dev/null|/bin/grep "openwsman-client-[0-9]" 2>/dev/null`
	SERVER=`/bin/rpm -qa 2>/dev/null|/bin/grep "openwsman-server-[0-9]" 2>/dev/null`
	WSMANCLI=`/bin/rpm -qa 2>/dev/null|/bin/grep "wsmancli-[0-9]" 2>/dev/null`
	HTTPD=`/bin/rpm -qa 2>/dev/null|/bin/grep "httpd-tools-[0-9]" 2>/dev/null`
	SSLDEV=`/bin/rpm -qa 2>/dev/null|/bin/grep "openssl-devel-[0-9]" 2>/dev/null`
	PEGASUSLIBS=`/bin/rpm -qa 2>/dev/null|/bin/grep "^tog-pegasus-libs-[0-9]" 2>/dev/null`
	PEGASUS=`/bin/rpm -qa 2>/dev/null|/bin/grep "^tog-pegasus-[0-9]" 2>/dev/null`
	SFCC=`/bin/rpm -qa 2>/dev/null|/bin/grep "^sblim-sfcc-[0-9]" 2>/dev/null`

	if [ -z "$CIM" ] || [ -z "$IPMIPKG" ] || [ -z "$SNMPPKG" ] || [ -z "$SLANGPKG" ] || [ -z "$NEWTPKG" ] || [ -z "$COMPATPKG" ] || [ -z "$RPCBINDPKG" ] || [ -z "$BASE" ] || [ -z "$HELPER" ] || [ -z "$WBEMCLI" ] || [ -z "$CLIENT" ] || [ -z "$SERVER" ] || [ -z "$WSMANCLI" ] || [ -z "$HTTPD" ] || [ -z "$SSLDEV" ] || [ -z "$PEGASUSLIBS" ] || [ -z "$PEGASUS" ] || [ -z "$SFCC" ] || [ -z "PYTHONLIBS" ] || [ -z "$PLYPKG" ] || [ -z "$SIXPKG" ] || [ -z "$DECORATORPKG" ] || [ -z "$JSONPOINTERPKG" ] || [ -z "$SETUPTOOLSPKG" ] ; then

		/bin/echo "Necessary packages are not installed. Install a package of [ NG ]."
		/bin/echo "****ESMPRO ServerAgentService depend on packages below: ****"
		if [ -z "$CIM" ]; then
			/bin/echo "      cim-schema package              [ NG ]"
		else
			/bin/echo "      cim-schema package              [ OK ]"
		fi

		if [ "$DISTRIBUTION" = "$RHEL6" ];then
			if [ -z "$COMPATPKG" ]; then
				/bin/echo "      compat-libstdc++-33 package     [ NG ]"
			else
				/bin/echo "      compat-libstdc++-33 package     [ OK ]"
			fi
		fi

		if [ -z "$HTTPD" ]; then
			/bin/echo "      httpd-tools package             [ NG ]"
		else
			/bin/echo "      httpd-tools package             [ OK ]"
		fi

		if [ -z "$SNMPPKG" ]; then
			/bin/echo "      net-snmp package                [ NG ]"
		else
			/bin/echo "      net-snmp package                [ OK ]"
		fi

		if [ -z "$NEWTPKG" ]; then
			/bin/echo "      newt package                    [ NG ]"
		else
			/bin/echo "      newt package                    [ OK ]"
		fi

		if [ "$IMLFLAG" = "0" ] && [ "$SATYPE" = "type3" ]; then
			if [ -z "$IPMIPKG" ]; then
				/bin/echo "      OpenIPMI package                [ NG ]"
			else
				/bin/echo "      OpenIPMI package                [ OK ]"
			fi
		fi

		if [ -z "$SSLDEV" ]; then
			/bin/echo "      openssl-devel package           [ NG ]"
		else
			/bin/echo "      openssl-devel package           [ OK ]"
		fi

		if [ -z "$CLIENT" ]; then
			/bin/echo "      openwsman-client package        [ NG ]"
		else
			/bin/echo "      openwsman-client package        [ OK ]"
		fi

		if [ -z "$SERVER" ]; then
			/bin/echo "      openwsman-server package        [ NG ]"
		else
			/bin/echo "      openwsman-server package        [ OK ]"
		fi

		if [ -z "$RPCBINDPKG" ]; then
			/bin/echo "      rpcbind package                 [ NG ]"
		else
			/bin/echo "      rpcbind package                 [ OK ]"
		fi

		if [ -z "$BASE" ]; then
			/bin/echo "      sblim-cmpi-base package         [ NG ]"
		else
			/bin/echo "      sblim-cmpi-base package         [ OK ]"
		fi

		if [ -z "$HELPER" ]; then
			/bin/echo "      sblim-indication_helper package [ NG ]"
		else
			/bin/echo "      sblim-indication_helper package [ OK ]"
		fi

		if [ -z "$SFCC" ]; then
			/bin/echo "      sblim-sfcc package              [ NG ]"
		else
			/bin/echo "      sblim-sfcc package              [ OK ]"
		fi

		if [ -z "$WBEMCLI" ]; then
			/bin/echo "      sblim-wbemcli package           [ NG ]"
		else
			/bin/echo "      sblim-wbemcli package           [ OK ]"
		fi

		if [ -z "$SLANGPKG" ]; then
			/bin/echo "      slang package                   [ NG ]"
		else
			/bin/echo "      slang package                   [ OK ]"
		fi

		if [ -z "$PEGASUS" ]; then
			/bin/echo "      tog-pegasus package             [ NG ]"
		else
			/bin/echo "      tog-pegasus package             [ OK ]"
		fi

		if [ -z "$PEGASUSLIBS" ]; then
			/bin/echo "      tog-pegasus-libs package        [ NG ]"
		else
			/bin/echo "      tog-pegasus-libs package        [ OK ]"
		fi

		if [ -z "$WSMANCLI" ]; then
			/bin/echo "      wsmancli package                [ NG ]"
		else
			/bin/echo "      wsmancli package                [ OK ]"
		fi

		if [ "$IMLFLAG" = "1" ] && [ "$DISTRIBUTION" = "$RHEL7" ] ; then
			if [ -z "$PYTHONLIBS" ]; then
				/bin/echo "      python-libs package             [ NG ]"
			else
				/bin/echo "      python-libs package             [ OK ]"
			fi

			if [ -z "$PLYPKG" ]; then
				/bin/echo "      python-ply package              [ NG ]"
			else
				/bin/echo "      python-ply package              [ OK ]"
			fi

			if [ -z "$SIXPKG" ]; then
				/bin/echo "      python-six package              [ NG ]"
			else
				/bin/echo "      python-six package              [ OK ]"
			fi

			if [ -z "$DECORATORPKG" ]; then
				/bin/echo "      python-decorator package        [ NG ]"
			else
				/bin/echo "      python-decorator package        [ OK ]"
			fi

			if [ -z "$JSONPOINTERPKG" ]; then
				/bin/echo "      python-jsonpointer package      [ NG ]"
			else
				/bin/echo "      python-jsonpointer package      [ OK ]"
			fi

			if [ -z "$SETUPTOOLSPKG" ]; then
				/bin/echo "      python-setuptools package       [ NG ]"
			else
				/bin/echo "      python-setuptools package       [ OK ]"
			fi
		fi

		/bin/echo "************depended packages end.************"
		exit 1
	fi

}

setopenwsman(){
	if [ -f /etc/openwsman/openwsman.conf ]; then
		WSMANCONF="/etc/openwsman/openwsman.conf"
	else
		WSMANCONF=""
	fi

	if [ -z "$WSMANCONF" ]; then
		/bin/echo "WARNING: no /etc/openwsman/openwsman.conf file!"
	else
		WSMANCONFBAK=$WSMANCONF".bak"

		# line "cim_client_frontend = XML" is not exist
		XML=`/bin/grep '^[[:space:]]*cim_client_frontend[[:space:]]*=[[:space:]]*XML[[:space:]]*$' -rn $WSMANCONF`
		if [ -z "$XML" ]; then

			#comment line "cim_client_frontend = ***(not XML)"
			NOTCOMMENTLINE=`/bin/grep '^[[:space:]]*cim_client_frontend[[:space:]]*=' -rn $WSMANCONF|/bin/grep -v '=[[:space:]]*XML[[:space:]]*$'`
			if [ ! -z "$NOTCOMMENTLINE" ]; then
				/bin/cp -arf $WSMANCONF $WSMANCONFBAK 2>/dev/null

				NOTCOMMENTNUM=${NOTCOMMENTLINE%%:*}
				LINESTR=${NOTCOMMENTLINE##*:}
				/bin/sed -i "${NOTCOMMENTNUM}s/${LINESTR}/# ${LINESTR}/g" $WSMANCONF
			fi

			#uncomment line "# cim_client_frontend = XML"
			CMNTXML=`/bin/grep '^[[:space:]]*#[[:space:]]*cim_client_frontend[[:space:]]*=[[:space:]]*XML[[:space:]]*$' -rn $WSMANCONF`
			if [ ! -z "$CMNTXML" ]; then
				if [ ! -f $WSMANCONFBAK ]; then
					/bin/cp -arf $WSMANCONF $WSMANCONFBAK 2>/dev/null
				fi
				NUM=${CMNTXML%%:*}
				/bin/sed -i "${NUM}"'s/^[[:space:]]*#//g' $WSMANCONF

				
			elif [ ! -z "$NOTCOMMENTNUM" ]; then
				/bin/sed -i "${NOTCOMMENTNUM} acim_client_frontend = XML" $WSMANCONF
			else
				if [ ! -f $WSMANCONFBAK ]; then
					/bin/cp -arf $WSMANCONF $WSMANCONFBAK 2>/dev/null
				fi
				/bin/echo "#add this setting in pp_install begin">>$WSMANCONF
				/bin/echo "cim_client_frontend = XML">>$WSMANCONF
				/bin/echo "#add this setting in pp_install end">>$WSMANCONF

			fi
		fi


		#TEMP=`/bin/grep -E "^\[| *port *=" -n $WSMANCONF|/bin/grep cim -A 1|/bin/grep port`
		#if [ ! -z "$TEMP" ]; then
		#	COMMENT=`/bin/echo $TEMP|/bin/grep ':[[:space:]]*#'`
		#	if [ -z "$COMMENT" ]; then
		#		ISCORRECT=`/bin/echo $TEMP|/bin/grep '=[[:space:]]*5988[[:space:]]*$'`
		#		if [ -z "$ISCORRECT" ]; then
		#			if [ ! -f $WSMANCONFBAK ]; then
		#				/bin/cp -arf $WSMANCONF $WSMANCONFBAK 2>/dev/null
		#			fi
		#
		#			NUM=${TEMP%%:*}
		#			VALUE=${TEMP##*=}
		#			/bin/sed -i "${NUM}s/${VALUE}/ 5988/g" $WSMANCONF
		#		fi
		#	fi
		#fi

		SSLCOMMENT=`/bin/grep -E "^\[| *# *ssl_port *=" -n $WSMANCONF|/bin/grep server -A 1|/bin/grep ssl_port`
		if [ ! -z "$SSLCOMMENT" ]; then
			if [ ! -f $WSMANCONFBAK ]; then
				/bin/cp -arf $WSMANCONF $WSMANCONFBAK 2>/dev/null
			fi
			NUM=${SSLCOMMENT%%:*}
			/bin/sed -i "${NUM}"'s/^[[:space:]]*#//g' $WSMANCONF
		fi

	fi
	
	/bin/sh /opt/nec/esmpro_sa/tools/esmsasgencert.sh >/dev/null 2>&1
}

setpegasus(){
	if [ -f /etc/Pegasus/access.conf ]; then
		PEGCONF="/etc/Pegasus/access.conf"
	else
		PEGCONF=""
	fi

	if [ -z "$PEGCONF" ]; then
		/bin/echo "WARNING: no /etc/Pegasus/access.conf file!"
	else
		PEGCONFBAK=$PEGCONF".bak"

		ALLSET=`/bin/grep -v '^[[:space:]]*#' -rn $PEGCONF | sed 's/[ \t]*//g'`
		if [ ! -z "$ALLSET" ]; then
			for ONESET in $ALLSET
			do
				LINECONT=${ONESET#*:}
				WBEMNET=`/bin/echo "$LINECONT" | /bin/grep "^+:ALL:wbemNetwork$"`
				WBEMLCL=`/bin/echo "$LINECONT" | /bin/grep "^+:ALL:wbemLocal$"`
				if [ -z "$WBEMNET" ] && [ -z "$WBEMLCL" ]; then
					if [ ! -f "$PEGCONFBAK" ]; then
						/bin/cp -arf $PEGCONF $PEGCONFBAK 2>/dev/null
					fi
					LINENUM=${ONESET%%:*}
					/bin/sed -i "${LINENUM}s/^/# /g" $PEGCONF 2>/dev/null
				fi
			done
		fi

		WBEMNET=`/bin/grep '^[[:space:]]*+[[:space:]]*:[[:space:]]*ALL[[:space:]]*:[[:space:]]*wbemNetwork[[:space:]]*$' -rn $PEGCONF`
		if [ -z "$WBEMNET" ]; then
			if [ ! -f "$PEGCONFBAK" ]; then
				/bin/cp -arf $PEGCONF $PEGCONFBAK 2>/dev/null
			fi

			WBEMNETCMT=`/bin/grep ':[[:space:]]*wbemNetwork[[:space:]]*$' -rn $PEGCONF`
			if [ ! -z "$WBEMNETCMT" ]; then
				LINENUM=${WBEMNETCMT%%:*}
				/bin/sed -i "${LINENUM} a+: ALL :wbemNetwork" $PEGCONF 2>/dev/null
			else
				/bin/echo "+: ALL :wbemNetwork">>$PEGCONF
			fi
		fi

		WBEMLCL=`/bin/grep '^[[:space:]]*+[[:space:]]*:[[:space:]]*ALL[[:space:]]*:[[:space:]]*wbemLocal[[:space:]]*$' -rn $PEGCONF`
		if [ -z "$WBEMLCL" ]; then
			if [ ! -f "$PEGCONFBAK" ]; then
				/bin/cp -arf $PEGCONF $PEGCONFBAK 2>/dev/null
			fi

			WBEMLCLCMT=`/bin/grep ':[[:space:]]*wbemLocal[[:space:]]*$' -rn $PEGCONF`
			if [ ! -z "$WBEMLCLCMT" ]; then
				LINENUM=${WBEMLCLCMT%%:*}
				/bin/sed -i "${LINENUM} a+: ALL :wbemLocal" $PEGCONF 2>/dev/null
			else
				/bin/echo "+: ALL :wbemLocal">>$PEGCONF
			fi
		fi
	fi

	if [ -f /usr/sbin/cimconfig ]; then
		/usr/sbin/cimconfig -p -s enableHttpConnection=true >/dev/null 2>&1
		/usr/sbin/cimconfig -p -s enableRemotePrivilegedUserAccess=true >/dev/null 2>&1
	else
		/bin/echo "WARNING: no /usr/sbin/cimconfig command!"
	fi
}

modpegasus(){
	if [ "$DISTRIBUTION" = "$RHEL6" ]; then
		regist_sh=/usr/share/sblim-cmpi-base/provider-register.sh
		regist_reg=/usr/share/sblim-cmpi-base/Linux_Base.registration
		regist_mof=/usr/share/sblim-cmpi-base/Linux_Base.mof
		if [ -f $regist_sh ] && [ -f $regist_reg ] && [ -f $regist_mof ]; then
			sed -i.bak -e 's/^Linux_OperatingSystem .*instance$/& method/g' $regist_reg
			$regist_sh -t pegasus -n root/cimv2 -r $regist_reg -m $regist_mof -d >/dev/null 2>&1
			$regist_sh -t pegasus -n root/cimv2 -r $regist_reg -m $regist_mof >/dev/null 2>&1
		fi

		regist_sh=""
		regist_reg=""
		regist_mof=""
	fi
} 

setautostart(){

	if [ -f /sbin/chkconfig ] ; then
		/sbin/chkconfig --level 35 sblim-sfcb off 2>/dev/null
		/sbin/chkconfig --level 35 tog-pegasus on 2>/dev/null
		/sbin/chkconfig --level 35 openwsmand on 2>/dev/null
		/sbin/chkconfig --level 35 snmpd on 2>/dev/null
		/sbin/chkconfig --level 35 rpcbind on 2>/dev/null

		if  [ "$IMLFLAG" = "0" ] && [ "$SATYPE" = "type3" ] ; then
			if [ "$DISTRIBUTION" = "$RHEL6" ]; then
				IPMIPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "OpenIPMI-[0-9]" 2>/dev/null`
				if [ -z "$IPMIPKG" ] ; then
					/bin/echo "WARNING: OpenIPMI package is necessary. Please check it!"
				else
					/sbin/chkconfig --level 35 ipmi on 2>/dev/null
				fi
			fi
		fi
	else
		/bin/echo "WARNING: There is no /sbin/chkconfig, so can not set os service to start or not start automatically."
	fi
}

setautostartsystemd(){
	if [ -f /usr/bin/systemctl ] ; then
		/usr/bin/systemctl disable sblim-sfcb.service 2>/dev/null
		/usr/bin/systemctl enable tog-pegasus.service 2>/dev/null
		/usr/bin/systemctl enable openwsmand.service 2>/dev/null
		/usr/bin/systemctl enable snmpd.service 2>/dev/null
		/usr/bin/systemctl enable NetworkManager-wait-online.service 2>/dev/null

		if  [ "$IMLFLAG" = "0" ] && [ "$SATYPE" = "type3" ] ; then
			if [ "$DISTRIBUTION" = "$RHEL7" ]; then
				IPMIPKG=`/bin/rpm -qa 2>/dev/null|/bin/grep "OpenIPMI-[0-9]" 2>/dev/null`
				if [ -z "$IPMIPKG" ] ; then
					/bin/echo "WARNING: OpenIPMI package is necessary. Please check it!"
				else
					/usr/bin/systemctl enable ipmi.service 2>/dev/null
				fi
			fi
		fi
	else
		/bin/echo "WARNING: There is no /usr/bin/systemctl, so can not set os service to start or not start automatically."
	fi
}

setlang(){
	if [ -f /opt/nec/esmpro_sa/data/i18n ]; then
		/bin/echo "LANG=\"$lang\"" > /opt/nec/esmpro_sa/data/i18n 2>/dev/null
	else
		/bin/echo "WARNING: no /opt/nec/esmpro_sa/data/i18n file."
	fi
}

checkarch(){

	MACHARCH="`/bin/uname -m 2>/dev/null`"
	case "$MACHARCH" in
		i?86)
			DMACHARCH="x86"
			;;
		x86_64)
			DMACHARCH="x86_64"
			;;
		ia64)
			DMACHARCH="ia64"
			;;
		*)
			/bin/echo "ERROR: Can not check the arch by uname-m command.The ARCH is ""$ARCH""(unknow by SA). So exit."
			exit 1
			;;
	esac
}

#type:NoIPMI/IPMIv10/IPMIv15
checktype(){

	TEMPTEMP=`/usr/sbin/dmidecode 2>/dev/null`

	if [ "$?" -ne "0" ] ; then
		/bin/echo "ERROR: Command /usr/sbin/dmidecode failed! So stop and exit."
		exit 1
	fi

	TEMPTEMP=`/bin/echo $TEMPTEMP|grep "type 38" 2>/dev/null`

	if [ -z "$TEMPTEMP" ] ; then
		SATYPE="type1"
	else
		TEMPTEMP=${TEMPTEMP##*type 38}
		TEMPTEMP=`/bin/echo $TEMPTEMP|grep "Specification Version:" 2>/dev/null`

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command /usr/sbin/dmidecode failed! So stop and exit."
			exit 1
		fi

		TEMPTEMP=${TEMPTEMP#*Specification Version:}
		TEMPTEMP=`/bin/echo $TEMPTEMP|cut -d" " -f1`

		if [ "$TEMPTEMP" = "1.0" ] ; then
			SATYPE="type2"
		elif [ "$TEMPTEMP" = "1.5" ] || [ "$TEMPTEMP" = "2.0" ] ; then
			SATYPE="type3"
		else
			/bin/echo "ERROR: The IPMI version is unknow, not 1.0/1.5/2.0, so exit."
			exit 1
		fi
	fi

}

rpmversionchk()
{

	RPMPACKAGE1=$1
	RPMPACKAGE2=$2

	TEMPTEMP=${RPMPACKAGE1##Esmpro-Provider-}
	TEMPTEMP=${TEMPTEMP##Esmpro-strgfs-Provider-}
	TEMPTEMP=${TEMPTEMP##Esmpro-Cmnsrv-}
	TEMPTEMP=${TEMPTEMP##Esmpro-Selsrv-}
	TEMPTEMP=${TEMPTEMP##Esmpro-Expsrv-}
	TEMPTEMP=${TEMPTEMP##esmrest-}

	case $MACHARCH in
		i?86)
			RPMPACKAGE1VER=${TEMPTEMP%%".$MACHARCH.rpm"}
			;;
		"x86_64")
			RPMPACKAGE1VER=${TEMPTEMP%%".x86_64.rpm"}
			;;
		"ia64")
			RPMPACKAGE1VER=${TEMPTEMP%%".ia64.rpm"}
			;;
		*)
			/bin/echo "ERROR: ""$RPMPACKAGE1"" package's ARCH is unknown, not i386/x86_64/ia64, so exit."
			exit 1
	esac

	TEMPTEMP=${RPMPACKAGE2##Esmpro-Provider-}
	TEMPTEMP=${TEMPTEMP##Esmpro-strgfs-Provider-}
	TEMPTEMP=${TEMPTEMP##Esmpro-Cmnsrv-}
	TEMPTEMP=${TEMPTEMP##Esmpro-Selsrv-}
	TEMPTEMP=${TEMPTEMP##Esmpro-Expsrv-}
	TEMPTEMP=${TEMPTEMP##esmrest-}

	case $MACHARCH in
		i?86)
			RPMPACKAGE2VER=${TEMPTEMP%%".$MACHARCH.rpm"}
			;;
		"x86_64")
			RPMPACKAGE2VER=${TEMPTEMP%%".x86_64.rpm"}
			;;
		"ia64")
			RPMPACKAGE2VER=${TEMPTEMP%%".ia64.rpm"}
			;;
		*)
			/bin/echo "ERROR: ""$RPMPACKAGE2"" package's ARCH is unknown, not i386/x86_64/ia64, so exit."
			exit 1
	esac

	if [ "$RPMPACKAGE1VER" = "$RPMPACKAGE2VER" ] ; then
		return 0
	fi

	BIGVER1=${RPMPACKAGE1VER%%.*}

	MIDVER1=${RPMPACKAGE1VER%%-*}
	MIDVER1=${MIDVER1#*.}
	MIDVER1=${MIDVER1%.*}

	SMALLVER1=${RPMPACKAGE1VER%%-*}
	SMALLVER1=${SMALLVER1#*.}
	SMALLVER1=${SMALLVER1#*.}

	REVISON1=${RPMPACKAGE1VER##*-}
	REVISON1=${REVISON1%ML}

	BIGVER2=${RPMPACKAGE2VER%%.*}

	MIDVER2=${RPMPACKAGE2VER%%-*}
	MIDVER2=${MIDVER2%.*}
	MIDVER2=${MIDVER2#*.}

	SMALLVER2=${RPMPACKAGE2VER%%-*}
	SMALLVER2=${SMALLVER2#*.}
	SMALLVER2=${SMALLVER2#*.}

	REVISON2=${RPMPACKAGE2VER##*-}
	REVISON2=${REVISON2%ML}

	if [ $BIGVER1 -gt  $BIGVER2 ] ; then
		return 1
	elif [ $BIGVER1 -lt $BIGVER2 ] ; then
		return 2
	fi

	if [ $MIDVER1 -gt $MIDVER2 ] ; then
		return 1
	elif [ $MIDVER1 -lt $MIDVER2 ] ; then
		return 2
	fi

	if [ $SMALLVER1 -gt $SMALLVER2 ] ; then
		return 1
	elif [ $SMALLVER1 -lt $SMALLVER2 ] ; then
		return 2
	fi

	if [ $REVISON1 -gt $REVISON2 ] ; then
		return 1
	elif [ $REVISON1 -lt $REVISON2 ] ; then
		return 2
	fi

	return 3
}

setsblimsfcc(){
	if [ "$DISTRIBUTION" = "$RHEL6" ]; then
		ln -s /usr/lib64/libcimcClientXML.so.0 /usr/lib64/libcimcClientXML.so 2>/dev/null
		ln -s /usr/lib64/libcimcclient.so.0 /usr/lib64/libcimcclient.so 2>/dev/null
		ln -s /usr/lib64/libcmpisfcc.so.1 /usr/lib64/libcmpisfcc.so 2>/dev/null
	fi
} 
checkandmakemona(){
	if [ $SERVICEMOD = 0 ]; then
		return 0;
	fi

	if [ -d "${ESMROOT}/${ESMREGALIVELEVEL}" ]; then
		HWID=`/usr/sbin/dmidecode 2>/dev/null | /bin/grep "DMI[\t ]*type\b\|HWID" -i | /bin/grep "DMI[\t ]*type[\t ]*11\b" -A 1 -i | /bin/grep "HWID" -i`
		HWID=`/bin/echo $HWID | /bin/sed 's/[ \t]//g' | /bin/sed 's/.*HWID=//g' | /bin/sed 'y/ABCDEF/abcdef/' | /bin/sed 's/^[0]*//g'`

		for hiwd in ${SERIES1} ; do
			if [ "${hiwd}" = "${HWID}" ] ; then
				/bin/echo -ne "\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00" > "${ESMROOT}/${ESMREGALIVELEVEL}/V_ISHIGHEND"
				break;
			fi
		done
		for hiwd in ${SERIES2} ; do
			if [ "${hiwd}" = "${HWID}" ] ; then
				/bin/echo -ne "\x04\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00" > "${ESMROOT}/${ESMREGALIVELEVEL}/V_ISHIGHEND"
				break;
			fi
		done
		for hiwd in ${SERIES4} ; do
			if [ "${hiwd}" = "${HWID}" ] ; then
				/bin/echo -ne "\x04\x00\x00\x00\x04\x00\x00\x00\x03\x00\x00\x00" > "${ESMROOT}/${ESMREGALIVELEVEL}/V_ISHIGHEND"
				break;
			fi
		done
		for hiwd in ${SERIES3} ${SERIES5}; do
			if [ "${hiwd}" = "${HWID}" ] ; then
				/bin/echo -ne "\x04\x00\x00\x00\x04\x00\x00\x00\xC0\xA8\x00\x00" > "${ESMROOT}/${ESMREGALIVELEVEL}/V_SETTIMEINTERVAL"
				/bin/echo -ne "\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00" > "${ESMROOT}/${ESMREGALIVELEVEL}/V_DISPLAYDIMMID"
				break;
			fi
		done
	fi
}
UpdateSA(){

	/bin/echo "ESMPRO ServerAgentService Update Begin."

	if [ -f /opt/nec/esmpro_sa/log/install_python-library.log ] ; then
		/bin/mv /opt/nec/esmpro_sa/log/install_python-library.log /opt/nec/esmpro_sa/log/.install_python-library.log >/dev/null 2>&1
	fi
	if [ -d "${CURRENTDIR}/${KERNEL}${DMACHARCH}" ] ; then
		PATHCDSAPVD=`/bin/ls ${CURRENTDIR}/${KERNEL}${DMACHARCH}/Esmpro-Provider-*[0-9].${MACHARCH}.rpm 2>/dev/null`
		if [ -z "$PATHCDSAPVD" ]; then
			/bin/echo "ERROR: There is no Esmpro-Provider package. So stop to update, exit."
			exit 1
		fi
	else
		KERNEL=""
		if [ -d "${CURRENTDIR}/${KERNEL}${DMACHARCH}" ] ; then
			PATHCDSAPVD=`/bin/ls ${CURRENTDIR}/${KERNEL}${DMACHARCH}/Esmpro-Provider-*[0-9].${MACHARCH}.rpm 2>/dev/null`
			if [ -z "$PATHCDSAPVD" ] ; then
				/bin/echo "ERROR: There is no Esmpro-Provider package. So stop to update, exit."
				exit 1
			fi
		else
			/bin/echo "ERROR: This kernel is not supported. So stop to update, exit."
			exit 1
		fi
	fi

	if [ ! -z ${PATHCDSAPVD#*.rpm} ] ; then
		/bin/echo "ERROR: packages conflict: Esmpro-Provider package is more than one. So stop to update, exit."
		exit 1
	fi

	CDSAPVD=${PATHCDSAPVD##*/}

	rpmversionchk $EXSITEDSAPVD $CDSAPVD

	if [ "$?" != "2" ] ; then
		/bin/echo "The installed Esmpro-Provider package's version is higher than the Esmpro-Provider package. So it is not necessary to update, exit."
		exit 0
	fi

	TEMPTEMP=`/bin/rpm -qa 2>/dev/null|/bin/grep Esmpro-strgfs-Provider` 2>/dev/null
	if [ ! -z "$TEMPTEMP" ] ; then

		PATHCDSASTRG=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-strgfs-Provider-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ -z "$PATHCDSASTRG" ] ; then
			/bin/echo "ERROR: There is no Esmpro-strgfs-Provider package. So stop to update, exit."
			exit 1
		fi

		if [ ! -z ${PATHCDSASTRG#*.rpm} ] ; then
			/bin/echo "ERROR: packages conflict: Esmpro-strgfs-Provider package is more than one. So stop to update, exit."
			exit 1
		fi

		CDSASTRG=${PATHCDSASTRG##*/}
		rpmversionchk $CDSAPVD $CDSASTRG
		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSASTRG"" So stop to update, exit."
			exit 1
		fi
	fi

	TEMPTEMP=`/bin/rpm -qa 2>/dev/null|/bin/grep Esmpro-Cmnsrv` 2>/dev/null
	if [ ! -z "$TEMPTEMP" ] ; then

		PATHCDSACMN=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Cmnsrv-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ -z "$PATHCDSACMN" ] ; then
			/bin/echo "ERROR: There is no Esmpro-Cmnsrv package. So stop to update, exit."
			exit 1
		fi

		if [ ! -z ${PATHCDSACMN#*.rpm} ] ; then
			/bin/echo "ERROR: packages conflict: Esmpro-Cmnsrv package is more than one. So stop to update, exit."
			exit 1
		fi

		CDSACMN=${PATHCDSACMN##*/}
		rpmversionchk $CDSAPVD $CDSACMN
		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSACMN"" So stop to update, exit."
			exit 1
		fi
	fi

	TEMPTEMP=`/bin/rpm -qa 2>/dev/null|/bin/grep Esmpro-Selsrv` 2>/dev/null
	if [ ! -z "$TEMPTEMP" ] ; then
		PATHCDSATYPE=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Selsrv-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ -z "$PATHCDSATYPE" ] ; then
			/bin/echo "ERROR: There is no Esmpro-Selsrv package. So stop to update, exit."
			exit 1
		fi

		if [ ! -z ${PATHCDSATYPE#*.rpm} ] ; then
			/bin/echo "ERROR: packages conflict: Esmpro-Selsrv package is more than one. So stop to update, exit."
			exit 1
		fi

		CDSATYPE=${PATHCDSATYPE##*/}

		rpmversionchk $CDSAPVD $CDSATYPE
		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSATYPE"" So stop to update, exit."
			exit 1
		fi
	fi

	TEMPTEMP=`/bin/rpm -qa 2>/dev/null|/bin/grep Esmpro-Expsrv` 2>/dev/null
	if [ ! -z "$TEMPTEMP" ] ; then
		PATHCDSAEXPRESS=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Expsrv-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ -z "$PATHCDSAEXPRESS" ] ; then
			/bin/echo "ERROR: There is no Esmpro-Expsrv package. So stop to update, exit."
			exit 1
		fi

		if [ ! -z ${PATHCDSAEXPRESS#*.rpm} ] ; then
			/bin/echo "ERROR: packages conflict: Esmpro-Expsrv package is more than one. So stop to update, exit."
			exit 1
		fi

		CDSAEXPRESS=${PATHCDSAEXPRESS##*/}
		rpmversionchk $CDSAPVD $CDSAEXPRESS
		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSAEXPRESS"" So stop to update, exit."
			exit 1
		fi
	fi

	/bin/rpm -Uvh "$PATHCDSAPVD" 2>/dev/null

	if [ "$?" -ne "0" ] ; then
		/bin/echo "ERROR: Command [/bin/rpm -Uvh ""$PATHCDSAPVD""] failed! So stop to update, exit."
		exit 1
	fi

	if [ ! -z "$PATHCDSASTRG" ] ; then
		/bin/rpm -Uvh --nopreun "$PATHCDSASTRG" 2>/dev/null	

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -Uvh --nopreun ""$PATHCDSASTRG""] failed! So stop to update, exit."	
			exit 1
		fi
	fi

	if [ ! -z "$PATHCDSACMN" ] ; then
		/bin/rpm -Uvh "$PATHCDSACMN" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -Uvh ""$PATHCDSACMN""] failed! So stop to update, exit."
			exit 1
		fi
	fi

	if [ ! -z "$PATHCDSATYPE" ] ; then
		/bin/rpm -Uvh "$PATHCDSATYPE" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -Uvh ""$PATHCDSATYPE""] failed! So stop to update, exit."
			exit 1
		fi
	fi

	if [ ! -z "$PATHCDSAEXPRESS" ] ; then
		/bin/rpm -Uvh "$PATHCDSAEXPRESS" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -Uvh ""$PATHCDSAEXPRESS""] failed! So stop to update, exit."
			exit 1
		fi
	fi

	if [ -f /opt/nec/esmpro_sa/log/.install_python-library.log ] ; then
		/bin/mv /opt/nec/esmpro_sa/log/.install_python-library.log /opt/nec/esmpro_sa/log/install_python-library.log >/dev/null 2>&1
	fi
	setlang
	checkandmakemona
	/bin/echo "ESMPRO ServerAgentService Update End successfully."

}

InstallSA(){

	/bin/echo "ESMPRO ServerAgentService Install Begin."

	if [ -d "$CURRENTDIR/$KERNEL$DMACHARCH" ] ; then
		PATHCDSAPVD=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Provider-*[0-9]."$MACHARCH".rpm 2>/dev/null`
		if [ -z "$PATHCDSAPVD" ]; then
			/bin/echo "ERROR: There is no Esmpro-Provider package.So stop to install,exit."
			exit 1
		fi
	else
		KERNEL=""
		if [ -d "$CURRENTDIR/$KERNEL$DMACHARCH" ] ; then
			PATHCDSAPVD=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Provider-*[0-9]."$MACHARCH".rpm 2>/dev/null`
			if [ -z "$PATHCDSAPVD" ] ; then
				/bin/echo "ERROR: There is no Esmpro-Provider package.So stop to install,exit."
				exit 1
			fi
		else
			/bin/echo "ERROR: This kernel is not supported. So stop to install, exit."
			exit 1
		fi
	fi

	if [ ! -z ${PATHCDSAPVD#*.rpm} ] ; then
		/bin/echo "ERROR: packages conflict: Esmpro-Provider package is more than one. So stop to install, exit."
		exit 1
	fi
	
	CDSAPVD=${PATHCDSAPVD##*/}

	PATHCDSASTRG=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-strgfs-Provider-*[0-9]."$MACHARCH".rpm 2>/dev/null`
	if [ ! -z "$PATHCDSASTRG" ] ; then
		if [ ! -z ${PATHCDSASTRG#*.rpm} ] ; then
			/bin/echo "ERROR: packages conflict: Esmpro-strgfs-Provider package is more than one. So stop to install, exit."
			exit 1
		fi

		CDSASTRG=${PATHCDSASTRG##*/}
		rpmversionchk $CDSAPVD $CDSASTRG
		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSASTRG"" So stop to install, exit."
			exit 1
		fi
	fi

	if [ $SERVICEMOD = 1 ]; then

		PATHCDSACMN=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Cmnsrv-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ -z "$PATHCDSACMN" ] ; then
			/bin/echo "ERROR: There is no Esmpro-Cmnsrv package. So stop to install, exit."
			exit 1
		fi

		if [ ! -z ${PATHCDSACMN#*.rpm} ] ; then
			/bin/echo "ERROR: packages conflict: Esmpro-Cmnsrv package is more than one. So stop to install, exit."
			exit 1
		fi

		CDSACMN=${PATHCDSACMN##*/}
		rpmversionchk $CDSAPVD $CDSACMN
		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSACMN"" So stop to install, exit."
			exit 1
		fi

		if [ "$SATYPE" = "type3" ]; then

			PATHCDSATYPE=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Selsrv-*[0-9]."$MACHARCH".rpm 2>/dev/null`

			if [ -z "$PATHCDSATYPE" ] ; then
				/bin/echo "ERROR: There is no Esmpro-Selsrv package. So stop to install, exit."
				exit 1
			fi

			if [ ! -z ${PATHCDSATYPE#*.rpm} ] ; then
				/bin/echo "ERROR: packages conflict: Esmpro-Selsrv package is more than one. So stop to install, exit."
				exit 1
			fi

			CDSATYPE=${PATHCDSATYPE##*/}
			rpmversionchk $CDSAPVD $CDSATYPE
			if [ "$?" -ne "0" ] ; then
				/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSATYPE"" So stop to install, exit."
				exit 1
			fi
		fi

		PATHCDSAEXPRESS=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/Esmpro-Expsrv-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ ! -z "$PATHCDSAEXPRESS" ] ; then

			if [ ! -z ${PATHCDSAEXPRESS#*.rpm} ] ; then
				/bin/echo "ERROR: packages conflict: Esmpro-Expsrv package is more than one. So stop to install, exit."
				exit 1
			fi

			CDSAEXPRESS=${PATHCDSAEXPRESS##*/}
			rpmversionchk $CDSAPVD $CDSAEXPRESS
			if [ "$?" -ne "0" ] ; then
				/bin/echo "ERROR: packages conflict: ""$CDSAPVD"" and ""$CDSAEXPRESS"" So stop to install, exit."
				exit 1
			fi
		fi
	fi

	/bin/rpm -ivh "$PATHCDSAPVD" 2>/dev/null

	if [ "$?" -ne "0" ] ; then
		/bin/echo "ERROR: Command [/bin/rpm -ivh ""$PATHCDSAPVD""] failed! So stop to install, exit."
		exit 1
	fi

	if [ ! -z "$PATHCDSASTRG" ] ; then
		/bin/rpm -ivh "$PATHCDSASTRG" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -ivh ""$PATHCDSASTRG""] failed! So stop to install, exit."
			exit 1
		fi
	fi

	if [ ! -z "$PATHCDSACMN" ]; then
		/bin/rpm -ivh "$PATHCDSACMN" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -ivh ""$PATHCDSACMN""] failed! So stop to install, exit."
			exit 1
		fi
	fi

	if [ ! -z "$PATHCDSATYPE" ]; then	
		/bin/rpm -ivh "$PATHCDSATYPE" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -ivh ""$PATHCDSATYPE""] failed! So stop to install, exit."
			exit 1
		fi
	fi

	if [ ! -z "$PATHCDSAEXPRESS" ] ; then
		/bin/rpm -ivh "$PATHCDSAEXPRESS" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -ivh ""$PATHCDSAEXPRESS""] failed! So stop to install, exit."
			exit 1
		fi
	fi

	if [ $CONFSETFLAG = 1 ] ; then
		setsblimsfcc
		setopenwsman
		setpegasus
		modpegasus
		if [ "$DISTRIBUTION" = "$RHEL7" ]; then
			setautostartsystemd
		else
			setautostart
		fi
	fi

	setlang
	checkandmakemona
	/bin/echo "ESMPRO ServerAgentService Install End successfully."
}

checkxhserver(){

	SMBIOSTYPE=`/usr/sbin/dmidecode 2>/dev/null | /bin/grep "DMI[\t ]*type[\t ]*195\b" -A 5 -i 2>/dev/null | /bin/grep "Strings" -A 1 -i 2>/dev/null | /bin/grep -v "Strings" -i 2>/dev/null`
	SYSTEMIDSTRING=${SMBIOSTYPE##*\$}
	SYSTEMID=${SYSTEMIDSTRING:0:4}
	if [ "0E11" == "$SYSTEMID"  ] || [ "1590" == "$SYSTEMID" ] ; then
		IMLFLAG=1
	fi
}

InstallPythonModule(){
	if [ "$IMLFLAG" == "0" ] || [ "$SERVICEMOD" == "0" ] || [ ! -f "$CURRENTDIR/python/install_python-library.sh" ]; then
		return 0
	fi
 
	PWD_DIR=`pwd`
	cd "$CURRENTDIR"/python
	/bin/echo "Python Module Install Begin."

	if  [ "$DISTRIBUTION" == "$RHEL6" ] ; then
		sh install_python-library.sh -d "${PYTHONMODULEPATH}"
	else
		sh install_python-library.sh 
	fi
	if [ $? -ne 0 ] ; then
		/bin/echo "ERROR: install python module failed! So stop to install, exit."
		exit 1
	fi
	/bin/echo -e "Python Module Install End successfully.\n"
	cd "$PWD_DIR"

}

InstallorUpdateESMRest(){
	if [ "$SERVICEMOD" == "0" ] || [ "$IMLFLAG" == "0" ] ; then
		return 0
	fi

	/bin/echo "ESMPRO ESMRest Package Install Begin."

        if [ ! -d "$CURRENTDIR/$KERNEL$DMACHARCH" ] ; then
                KERNEL=""
        fi

	EXSITEDSAREST=`/bin/rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' 2>/dev/null|/bin/grep "esmrest" 2>/dev/null`
	if [ ! -z "$EXSITEDSAREST" ] ; then
		PATHCDSAREST=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/esmrest-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ ! -z "$PATHCDSAREST" ] ; then

			if [ ! -z ${PATHCDSAREST#*.rpm} ] ; then
				/bin/echo "ERROR: packages conflict: esmrest package is more than one. So stop to update, exit."
				exit 1
			fi

			CDSAREST=${PATHCDSAREST##*/}
			rpmversionchk $EXSITEDSAREST $CDSAREST
			retcode=$?
			if [ "$retcode" -eq "3" ] ; then
				/bin/echo "ERROR: esmrest's version is invalid: ""$EXSITEDSAREST"" and ""$CDSAREST""."
				exit 1
			elif [ "$retcode" -ne "2" ] ; then
				/bin/echo "INFO: need not to update esmrest: ""$EXSITEDSAREST"" and ""$CDSAREST""."
				PATHCDSAREST=""
			fi
		fi
	else
		PATHCDSAREST=`/bin/ls $CURRENTDIR/$KERNEL$DMACHARCH/esmrest-*[0-9]."$MACHARCH".rpm 2>/dev/null`

		if [ ! -z "$PATHCDSAREST" ] ; then

			if [ ! -z ${PATHCDSAREST#*.rpm} ] ; then
				/bin/echo "ERROR: packages conflict: esmrest package is more than one. So stop to install, exit."
				exit 1
			fi
		fi
	fi

	if [ ! -z "$PATHCDSAREST" ] ; then
		/bin/rpm -Uvh "$PATHCDSAREST" 2>/dev/null

		if [ "$?" -ne "0" ] ; then
			/bin/echo "ERROR: Command [/bin/rpm -Uvh ""$PATHCDSAREST""] failed! So stop to install, exit."
			exit 1
		fi
	fi
	
	/bin/echo -e "ESMPRO ESMRest Package Install End successfully.\n"
}

CheckLibraryPath(){
    if [ -z "${PYTHONMODULEPATH}" ] ; then
        PYTHONMODULEPATH="${PYTHONMODULEPATHDEFAULT}"
    fi

    PYTHONMODULEPATH="${PYTHONMODULEPATH%/}"
}

SetLibraryPath(){
    # RHEL7 and RHEL6 to be same.
    if [ -f "${CURRENTDIR}"/collectsa.sh ] ; then
        /bin/cp -pf "${CURRENTDIR}"/collectsa.sh /opt/nec/esmpro_sa/tools/ >/dev/null 2>&1
        /bin/chmod 755 /opt/nec/esmpro_sa/tools/collectsa.sh
        /bin/chown root:root /opt/nec/esmpro_sa/tools/collectsa.sh
    fi
    if [ "$IMLFLAG" == "1" ] && [ "$DISTRIBUTION" == "$RHEL6" ] && [ "$SERVICEMOD" == "1" ]; then
        #Set python path of /etc/init.d/ESMsmsrv
        if [ -f /etc/init.d/ESMsmsrv ] ; then
            LibraryPathLine=`/bin/grep "^export LD_LIBRARY_PATH=" /etc/init.d/ESMsmsrv 2>/dev/null`
            if [ -n "${LibraryPathLine}" ] ; then
                /bin/sed '/^export LD_LIBRARY_PATH=/d' /etc/init.d/ESMsmsrv >/etc/init.d/ESMsmsrv.new
            else
                /bin/mv /etc/init.d/ESMsmsrv /etc/init.d/ESMsmsrv.new 1>/dev/null 2>&1
            fi
            
            /bin/sed "/case/ i\\
export LD_LIBRARY_PATH=\"${PYTHONMODULEPATH}/lib\":/opt/nec/esmpro_sa/lib" /etc/init.d/ESMsmsrv.new > /etc/init.d/ESMsmsrv

            /bin/rm -f  /etc/init.d/ESMsmsrv.new   1>/dev/null 2>&1 
            /bin/chmod 755 /etc/init.d/ESMsmsrv
            /bin/chown root:root /etc/init.d/ESMsmsrv
            
        fi
        
        #Set python path of collectsa.sh
        
        if [ -f /opt/nec/esmpro_sa/tools/collectsa.sh ] ; then
            LibraryPathLine=`/bin/grep "^PYTHONMODULEPATH=" /opt/nec/esmpro_sa/tools/collectsa.sh 2>/dev/null`
            if [ -n "${LibraryPathLine}" ] ; then
                /bin/sed '/^PYTHONMODULEPATH=/d' /opt/nec/esmpro_sa/tools/collectsa.sh >/opt/nec/esmpro_sa/tools/collectsa.sh.new
            else
                /bin/mv /opt/nec/esmpro_sa/tools/collectsa.sh /opt/nec/esmpro_sa/tools/collectsa.sh.new 1>/dev/null 2>&1
            fi

            /bin/sed "/^PYTHONMODULEPATHDEFAULT=/ i\\
PYTHONMODULEPATH=\"${PYTHONMODULEPATH}\"" /opt/nec/esmpro_sa/tools/collectsa.sh.new > /opt/nec/esmpro_sa/tools/collectsa.sh

            /bin/rm -f /opt/nec/esmpro_sa/tools/collectsa.sh.new 1>/dev/null 2>&1
            /bin/chmod 755 /opt/nec/esmpro_sa/tools/collectsa.sh
            /bin/chown root:root /opt/nec/esmpro_sa/tools/collectsa.sh
        fi
    fi
}



CURRENTDIR=$0
CURRENTDIR=${CURRENTDIR%/*}
if [ "$0" = "$CURRENTDIR" ]; then
	CURRENTDIR="."
fi

CONFSETFLAG=1
SERVICEMOD=1
lang="ja_JP.UTF-8"

while [ $# -gt "0" ] ; do
	case $1 in
		"-h")
			usage
			exit 0
			;;
		"-s")
			shift
			if [ $# -gt "0" -a "$1" != "-h" ] ; then
				if [ "$1" = "OFF" ] ; then
					CONFSETFLAG=0
				fi
			else
				usage
				exit 1
			fi
			shift
			;;
		"-p")
			shift
			if [ $# -gt "0" -a "$1" != "-h" ] ; then
				if [ "$1" = "OFF" ] ; then
					SERVICEMOD=0
				fi
			else
				usage
				exit 1
			fi
			shift
			;;
		"-l")
			shift
			if [ $# -gt "0" -a "$1" != "-h" ] ; then
				lang=$1
			else
				usage
				exit 1
			fi
			shift
			;;
		"-d")
			shift
			if [ $# -gt "0" -a "$1" != "-h" ] ; then
				PYTHONMODULEPATH="$1"
				if [ ! -d "${PYTHONMODULEPATH}" ] ; then
					echo -e "ERROR: Not found ${PYTHONMODULEPATH} directory."
					exit 1
				fi
			else
				usage
				exit 1
			fi
			shift
			;;
		*)
			usage
			exit 1
			;;
	esac
done

CheckLibraryPath
checkkernel
checkarch
checkdmi
checkxhserver
checktype
checkdependpkg

if [ "$DISTRIBUTION" = "$RHEL6" ]; then
	if [ -f /sbin/service ] ; then
		/sbin/service sblim-sfcb stop >/dev/null 2>&1
		/sbin/service tog-pegasus restart >/dev/null 2>&1
		/bin/ps -C cimserver > /dev/null 2>&1 
		if [ $? -ne 0 ] ; then
			/etc/init.d/tog-pegasus start 2>&1 
		fi
	else
		/bin/echo "WARNING: There is no /sbin/service, can not stop sblim-sfcb and start tog-pegasus, so exit."
		exit 1
	fi

elif [ "$DISTRIBUTION" = "$RHEL7" ]; then
	if [ -f /usr/bin/systemctl ] ; then
		/usr/bin/systemctl stop sblim-sfcb.service >/dev/null 2>&1
		/usr/bin/systemctl restart tog-pegasus.service >/dev/null 2>&1
		/bin/ps -C cimserver > /dev/null 2>&1 
		if [ $? -ne 0 ] ; then
			/usr/share/Pegasus/scripts/generate-certs 2>&1
			/usr/sbin/cimserver 2>&1 
		fi
	else
		/bin/echo "WARNING: There is no /usr/bin/systemctl, can not stop sblim-sfcb and start tog-pegasus, so exit."
		exit 1
	fi
fi

InstallPythonModule
InstallorUpdateESMRest

EXSITEDSAPVD=`/bin/rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' 2>/dev/null|/bin/grep "Esmpro-Provider" 2>/dev/null`

if [ ! -z "$EXSITEDSAPVD" ] ; then
	UpdateSA
else
	InstallSA
fi

SetLibraryPath

if [ -f "${CURRENTDIR}"/esmpostinst.sh ] ; then
    /bin/echo "esmpostinst.sh script begin."
    sh "${CURRENTDIR}"/esmpostinst.sh
    if [ $? == 1 ] ; then
        /bin/echo "ERROR: esmpostinst.sh script failed!"
        exit 1
    fi
    /bin/echo "esmpostinst.sh script end successfully."
fi
