You are on page 1of 17

#!

/bin/sh
# updated on March 7, 2018
# Concept and Development: APS
# Script's objective:
# This script will notify given list of users (in _tolist and _cclist) in case
client settings are changed from default designated values.
# It will generate alert whenever client is open only once and will generate alert
whenever client is closed back as well as daily at: 08:00 and 15:00
#
#--------------------------------------------------------Customization
Settings---------------------------------------------------------------------------
----#
# A) Maintain recipients here as per your environment
_tolist="ajaypratap.singh@honeywell.com"
_cclist="ajaypratap.singh@honeywell.com"
#_tolist="gaurav.jain@advansix.com"
#_cclist="gaurav.jain@advansix.com"
#_tolist="Andrew.Bodunrin@advansix.com"
#_cclist="Andrew.Bodunrin@advansix.com"
#_tolist="fujitsusapteam@advansix.com"
#_cclist="Andrew.Bodunrin@advansix.com,gaurav.jain@advansix.com,larry.price@advansi
x.com,Gerald.Bello@advansix.com,karthik.varatharajalu@advansix.com,amit.khare@advan
six.com,nadim.iqbal@advansix.com,fareed.syed@advansix.com,Jayatheertha.Joshi@advans
ix.com"
#
#
# B) Please maintain recipients in case the script has got some issues
#ERR_EMAIL="fujitsusapteam@advansix.com"
ERR_EMAIL="ajaypratap.singh@honeywell.com"
#
# C) Please change the location with your preferred directory
WORK_DIR="/opt/fujitsu/APS/Client_Check"
#
#
#
# Default Client Settings Template: You can customize SCC4 settings here. Refer to
T000 table of respective system and use current values here. If value is not
maintained, type SPACE
## Value of MANDT will be provided while calling the script
DEF_CCCATEGORY="T"
DEF_CCCORACTIV="SPACE"
DEF_CCNOCLIIND="SPACE"
DEF_CCCOPYLOCK="SPACE"
DEF_CCIMAILDIS="X"
DEF_CCNOCASCAD="SPACE"
DEF_MTEXT="SM BW DEV"
DEF_ORT01="Tempe, Arizona"
DEF_MWAER="USD"
DEF_LOGSYS="CND900"
#
#
#
#----------------------------------------------------------------------------------
--------------------------------------------------------------------------#
#
#
#
#
#
###################################################################################
###################################################################################
#################
# CODE
STARTS FROM NEXT LINE ONWARDS
###################################################################################
###################################################################################
##################
echo "$DEF_MTEXT" > t1
echo "$DEF_ORT01" > t2
DEF_MTEXT=`cat t1 | tr -d '[:blank:]'`
DEF_ORT01=`cat t2 | tr -d '[:blank:]'`
formatDate (){
_myinput=$1
_year=`echo $_myinput | cut -c 1-4`
_tmonth=`echo $_myinput | cut -c 5-6`
_day=`echo $_myinput | cut -c 7-8`
case "$_tmonth" in
"01")
_mon="JAN"
;;
"02")
_mon="FEB"
;;
"03")
_mon="MAR"
;;
"04")
_mon="APR"
;;
"05")
_mon="MAY"
;;
"06")
_mon="JUN"
;;
"07")
_mon="JUL"
;;
"08")
_mon="AUG"
;;
"09")
_mon="SEP"
;;
"10")
_mon="OCT"
;;
"11")
_mon="NOV"
;;
"12")
_mon="DEC"
;;
*)
_mon="XXX"
;;
esac
echo $_day-$_mon-$_year
}
printCCCATEGORY ()
{
CCCATEGORY=$1
case "$CCCATEGORY" in
"P")
_val="Production"
;;
"T")
_val="Test"
;;
"C")
_val="Customizing"
;;
"D")
_val="Demo"
;;
"E")
_val="Training/Education"
;;
"S")
_val="SAP reference"
;;
*)
_val="XXX"
;;
esac
if [[ ! ${CCCATEGORY} = ${DEF_CCCATEGORY} ]];then
echo "<td style="background-color:red\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printCCCORACTIV ()
{
CCCORACTIV=$1
case "$CCCORACTIV" in
"1")
_val="Automatic recording of changes"
;;
"2")
_val="No Changes allowed"
;;
"3")
_val="Changes without automatic recording, no transports allowed"
;;
*)
_val="Changes without automatic recording"
;;
esac
if [[ ! ${CCCORACTIV} = ${DEF_CCCORACTIV} ]];then
echo "<td style="background-color:red\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printCCNOCLIIND ()
{
CCNOCLIIND=$1
case "$CCNOCLIIND" in
"1")
_val="No changes to cross-client Customizing objects"
;;
"2")
_val="No changes to Repository objects"
;;
"3")
_val="Customizing: Can be changed as req., but cannot be transp."
;;
*)
_val="Changes to Repository and cross-client Customizing allowed"
;;
esac
if [[ ! ${CCNOCLIIND} = ${DEF_CCNOCLIIND} ]];then
echo "<td style="background-color:red\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printCCCOPYLOCK ()
{
CCCOPYLOCK=$1
case "$CCCOPYLOCK" in
"X")
_val="Protection level 1: No overwriting"
;;
"L")
_val="Protection level 2: No overwriting, no external availability"
;;
*)
_val="Protection level 0: No restriction"
;;
esac
if [[ ! ${CCCOPYLOCK} = ${DEF_CCCOPYLOCK} ]];then
echo "<td style="background-color:red\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printCCIMAILDIS ()
{
CCIMAILDIS=$1
case "$CCIMAILDIS" in
"X")
_val="eCATT and CATT Allowed"
;;
"T")
_val="eCATT and CATT Only Allowed for 'Trusted RFC'"
;;
"E")
_val="eCATT Allowed, but FUN/ABAP and CATT not Allowed"
;;
"F")
_val="eCATT allowed, but FUN/ABAP and CATT only for 'Trusted RFC'"
;;
*)
_val="eCATT and CATT Not Allowed"
;;
esac
if [[ ! ${CCIMAILDIS} = ${DEF_CCIMAILDIS} ]];then
echo "<td style="background-color:red\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printCCNOCASCAD ()
{
CCNOCASCAD=$1
case "$CCNOCASCAD" in
"X")
_val="Yes"
;;
*)
_val="No"
;;
esac
if [[ ! ${CCNOCASCAD} = ${DEF_CCNOCASCAD} ]];then
echo "<td style="background-color:red\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printMTEXT ()
{
MTEXT=$1
if [[ ! ${MTEXT} = ${DEF_MTEXT} ]];then
echo "<td style="background-color:red\;">$(cat $
{WORK_DIR}/.SCC4MTEXT.dat)</td>" >> ${WORK_DIR}/.ClientData.data
else
_val=`cat t1`
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printORT01 ()
{
ORT01=$1
if [[ ! ${ORT01} = ${DEF_ORT01} ]];then
echo "<td style="background-color:red\;">$(cat $
{WORK_DIR}/.SCC4ORT01.dat)</td>" >> ${WORK_DIR}/.ClientData.data
else
_val=`cat t2`
echo "<td style="background-color:"#00FF00"\;">$_val</td>" >> $
{WORK_DIR}/.ClientData.data
fi
}
printMWAER ()
{
MWAER=$1
if [[ ! ${MWAER} = ${DEF_MWAER} ]];then
echo "<td style="background-color:red\;">$_MWAER</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$DEF_MWAER</td>" >>
${WORK_DIR}/.ClientData.data
fi
}
printLOGSYS ()
{
LOGSYS=$1
if [[ ! ${LOGSYS} = ${DEF_LOGSYS} ]];then
echo "<td style="background-color:red\;">$_LOGSYS</td>" >> $
{WORK_DIR}/.ClientData.data
else
echo "<td style="background-color:"#00FF00"\;">$DEF_LOGSYS</td>" >>
${WORK_DIR}/.ClientData.data
fi
}
runDuplicateCheck (){
curProcCount=$(ps -ef | grep "$1" | grep -v grep | wc -l | tr -d " \t")
if [[ "${curProcCount}" -ge "3" ]];then
echo
echo "***WARNING: client settings check script is already being
executed, can't run another instance of the same script***"
echo "***$(uname -n) client settings check Script multiple run
attempted, please check if the previous script is already being executed***" | mail
-s "SCC4 Script" $ERR_EMAIL
exit 8;
fi
}
execSQL (){
execSQL1
if [[ $RC = 0 ]];then
execSQL2
if [[ $RC = 0 ]];then
execSQL3
if [[ $RC = 0 ]];then
execSQL4
if [[ $RC = 0 ]];then
execSQL5
if [[ $RC = 0 ]];then
RC=0
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues,
please check the execSQL5 function of the script for any issues"
echo "$SID $(uname -n) SCC4 Script has issues,
please check the execSQL5 function of the script for any issues" | mail -s "$(uname
-n) SCC4 Script Issue" $ERR_EMAIL
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please
check the execSQL4 function of the script for any issues"
echo "$SID $(uname -n) SCC4 Script has issues, please
check the execSQL4 function of the script for any issues" | mail -s "$(uname -n)
SCC4 Script Issue" $ERR_EMAIL
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check
the execSQL3 function of the script for any issues"
echo "$SID $(uname -n) SCC4 Script has issues, please check
the execSQL3 function of the script for any issues" | mail -s "$(uname -n) SCC4
Script Issue" $ERR_EMAIL
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
execSQL2 function of the script for any issues"
echo "$SID $(uname -n) SCC4 Script has issues, please check the
execSQL2 function of the script for any issues" | mail -s "$(uname -n) SCC4 Script
Issue" $ERR_EMAIL
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
execSQL1 function of the script for any issues"
echo "$SID $(uname -n) SCC4 Script has issues, please check the
execSQL1 function of the script for any issues" | mail -s "$(uname -n) SCC4 Script
Issue" $ERR_EMAIL
fi
return $RC
}
createSQLFile1 (){
#MAP Function
# MAP(LookInColumn, LookForValue, ReplaceWith, OtherwiseReturnValue)
if [[ ! -f /tmp/File1.sql ]];then
echo "SELECT
map (CCCATEGORY,'','SPACE',CCCATEGORY) CCCATEGORY, map
(CCCORACTIV,'','SPACE',CCCORACTIV) CCCORACTIV, map
(CCNOCLIIND,'','SPACE',CCNOCLIIND) CCNOCLIIND,
map (CCCOPYLOCK,'','SPACE',CCCOPYLOCK) CCCOPYLOCK, map
(CCIMAILDIS,'','SPACE',CCIMAILDIS) CCIMAILDIS, map
(CCNOCASCAD,'','SPACE',CCNOCASCAD) CCNOCASCAD,
map (CHANGEUSER,'','SPACE',CHANGEUSER) CHANGEUSER, map
(CHANGEDATE,'','SPACE',CHANGEDATE) CHANGEDATE, map (MWAER,'','SPACE',MWAER) MWAER,
map (LOGSYS,'','SPACE',LOGSYS) LOGSYS
FROM ${MY_SCHEMA}.T000 WHERE MANDT = '${MANDT}';" >/tmp/File1.sql
chown $SIDADM:sapsys /tmp/File1.sql
chmod 755 /tmp/File1.sql
if [[ -r /tmp/File1.sql ]];then
RC=0
else
RC=8
fi
return $RC
fi
}
execSQL1 (){
createSQLFile1
if [[ $RC = 0 ]];then
if [[ -z "${MY_SSL}" ]] || [[ "${MY_SSL}" = "N" ]];then
su - $SIDADM -c "hdbsql -U $MY_SECKEY -I /tmp/File1.sql -a -o $
{WORK_DIR}/.CurrentSCC4Settings.dat \di"
RC=$?
elif [[ "${MY_SSL}" = "Y" ]];then
su - $SIDADM -c "hdbsql -e -U $MY_SECKEY -I /tmp/File1.sql -a -o
${WORK_DIR}/.CurrentSCC4Settings.dat \di"
RC=$?
else
RC=8
echo "Please check the supplied inputs while you executed the
script, can't continue with what you have provided"
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
createSQLFile1 function of the script for any issues"
fi
return $RC
}
createSQLFile2 (){
if [[ ! -f /tmp/File2.sql ]];then
echo "SELECT map (CHANGEUSER,'','SPACE',CHANGEUSER) CHANGEUSER, map
(CHANGEDATE,'','SPACE',CHANGEDATE) CHANGEDATE FROM ${MY_SCHEMA}.T000 WHERE MANDT =
'${MANDT}';" >/tmp/File2.sql
chown $SIDADM:sapsys /tmp/File2.sql
chmod 755 /tmp/File2.sql
if [[ -r /tmp/File2.sql ]];then
RC=0
else
RC=8
fi
return $RC
fi
}
execSQL2 (){
createSQLFile2
if [[ $RC = 0 ]];then
if [[ -z "${MY_SSL}" ]] || [[ "${MY_SSL}" = "N" ]];then
su - $SIDADM -c "hdbsql -U $MY_SECKEY -I /tmp/File2.sql -a -o $
{WORK_DIR}/.SCC4_LastChange.dat \di"
RC=$?
elif [[ "${MY_SSL}" = "Y" ]];then
su - $SIDADM -c "hdbsql -e -U $MY_SECKEY -I /tmp/File2.sql -a -o
${WORK_DIR}/.SCC4_LastChange.dat \di"
RC=$?
else
RC=8
echo "Please check the supplied inputs while you executed the
script, can't continue with what you have provided"
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
createSQLFile2 function of the script for any issues"
fi
return $RC
}
createSQLFile3 (){
if [[ ! -f /tmp/File3.sql ]];then
echo "SELECT LINE FROM ${MY_SCHEMA}.DDPRS WHERE LINE like '%ETO174%' order by
DDPOSITION DESC;" >/tmp/File3.sql
chown $SIDADM:sapsys /tmp/File3.sql
chmod 755 /tmp/File3.sql
if [[ -r /tmp/File3.sql ]];then
RC=0
else
RC=8
fi
return $RC
fi
}
execSQL3 (){
createSQLFile3
if [[ $RC = 0 ]];then
if [[ -z "${MY_SSL}" ]] || [[ "${MY_SSL}" = "N" ]];then
su - $SIDADM -c "hdbsql -U $MY_SECKEY -I /tmp/File3.sql -a -o $
{WORK_DIR}/.CurrentSE06Settings.dat \di"
RC=$?
elif [[ "${MY_SSL}" = "Y" ]];then
su - $SIDADM -c "hdbsql -e -U $MY_SECKEY -I /tmp/File3.sql -a -o
${WORK_DIR}/.CurrentSE06Settings.dat \di"
RC=$?
else
RC=8
echo "Please check the supplied inputs while you executed the
script, can't continue with what you have provided"
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
createSQLFile3 function of the script for any issues"
fi
return $RC
}
createSQLFile4 (){
if [[ ! -f /tmp/File4.sql ]];then
echo "SELECT map (MTEXT,'','SPACE',MTEXT) MTEXT FROM ${MY_SCHEMA}.T000 WHERE
MANDT = '${MANDT}';" >/tmp/File4.sql
chown $SIDADM:sapsys /tmp/File4.sql
chmod 755 /tmp/File4.sql
if [[ -r /tmp/File4.sql ]];then
RC=0
else
RC=8
fi
return $RC
fi
}
execSQL4 (){
createSQLFile4
if [[ $RC = 0 ]];then
if [[ -z "${MY_SSL}" ]] || [[ "${MY_SSL}" = "N" ]];then
su - $SIDADM -c "hdbsql -U $MY_SECKEY -I /tmp/File4.sql -a -o $
{WORK_DIR}/.SCC4MTEXT.dat \di"
RC=$?
elif [[ "${MY_SSL}" = "Y" ]];then
su - $SIDADM -c "hdbsql -e -U $MY_SECKEY -I /tmp/File4.sql -a -o
${WORK_DIR}/.SCC4MTEXT.dat \di"
RC=$?
else
RC=8
echo "Please check the supplied inputs while you executed the
script, can't continue with what you have provided"
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
createSQLFile4 function of the script for any issues"
fi
return $RC
}
createSQLFile5 (){
if [[ ! -f /tmp/File5.sql ]];then
echo "SELECT map (ORT01,'','SPACE',ORT01) ORT01 FROM ${MY_SCHEMA}.T000 WHERE
MANDT = '${MANDT}';" >/tmp/File5.sql
chown $SIDADM:sapsys /tmp/File5.sql
chmod 755 /tmp/File5.sql
if [[ -r /tmp/File5.sql ]];then
RC=0
else
RC=8
fi
return $RC
fi
}
execSQL5 (){
createSQLFile5
if [[ $RC = 0 ]];then
if [[ -z "${MY_SSL}" ]] || [[ "${MY_SSL}" = "N" ]];then
su - $SIDADM -c "hdbsql -U $MY_SECKEY -I /tmp/File5.sql -a -o $
{WORK_DIR}/.SCC4ORT01.dat \di"
RC=$?
elif [[ "${MY_SSL}" = "Y" ]];then
su - $SIDADM -c "hdbsql -e -U $MY_SECKEY -I /tmp/File5.sql -a -o
${WORK_DIR}/.SCC4ORT01.dat \di"
RC=$?
else
RC=8
echo "Please check the supplied inputs while you executed the
script, can't continue with what you have provided"
fi
else
RC=8
echo "$SID $(uname -n) SCC4 Script has issues, please check the
createSQLFile5 function of the script for any issues"
fi
return $RC
}
testDBconnection (){
RC=8
if [[ ! -z $(ps -ef | grep $SIDADM | egrep -ow "HDB[0-9][0-9]" | uniq | cut -c 4-5
| tr -d ' \t') ]];then
if [[ $(ps -ef | grep $SIDADM | egrep -ow "HDB[0-9][0-9]" | uniq | cut -c 4-5
| tr -d ' \t' | wc -l) -eq 1 ]];then
yHDB_NO=$(ps -ef | grep $SIDADM | egrep -ow "HDB[0-9][0-9]" | uniq |
cut -c 4-5 | tr -d ' \t')
yHDB_STAT=$(su - $SIDADM -c "sapcontrol -nr $yHDB_NO -function
GetProcessList | egrep "hdbdaemon" | cut -d',' -f3 | tr -d ' \t'")
if [[ ! -z $yHDB_STAT ]] && [[ "$yHDB_STAT" = "GREEN" ]];then
RC=0
else
echo "No connection to HANA DB, may be down or having other
issues."
RC=8
fi
else
echo "No connection to HANA DB, may be down or having other issues."
RC=8
fi
else
echo "No connection to HANA DB, may be down or having other issues."
RC=8
fi
}
headerStatus ()
{
echo "TO: $_tolist" > ${WORK_DIR}/.ClientData.data
echo "From: noreply@advasix.com" >> ${WORK_DIR}/.ClientData.data
echo "CC: $_cclist" >> ${WORK_DIR}/.ClientData.data
echo "Subject: $SID Client $MANDT Settings $_cstat by $scc4_lstchnguser on $
(formatDate $scc4_lstchngdate)" >> ${WORK_DIR}/.ClientData.data
echo "Content-Type: text/html" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "<!DOCTYPE html>" >> ${WORK_DIR}/.ClientData.data
echo "<html>" >> ${WORK_DIR}/.ClientData.data
echo "<body style="background-color:powerblue\;">" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "<style>" >> ${WORK_DIR}/.ClientData.data
echo "table, th, td" >> ${WORK_DIR}/.ClientData.data
echo "{" >> ${WORK_DIR}/.ClientData.data
echo " border: 3px solid blue;" >> ${WORK_DIR}/.ClientData.data
echo " border-collapse: collapse;" >> ${WORK_DIR}/.ClientData.data
echo "}" >> ${WORK_DIR}/.ClientData.data
echo "th, td " >> ${WORK_DIR}/.ClientData.data
echo "{" >> ${WORK_DIR}/.ClientData.data
echo " padding: 4px;" >> ${WORK_DIR}/.ClientData.data
echo " text-align: center;" >> ${WORK_DIR}/.ClientData.data
echo "}" >> ${WORK_DIR}/.ClientData.data
echo "</style>" >> ${WORK_DIR}/.ClientData.data
echo "</head>" >> ${WORK_DIR}/.ClientData.data
echo "<body>" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "<table style="width:65%">" >> ${WORK_DIR}/.ClientData.data
echo " <tr>" >> ${WORK_DIR}/.ClientData.data
echo " <th style="background-color:"#00FFFF"\;">Client</th>" >> $
{WORK_DIR}/.ClientData.data
echo " <th style="background-color:"#00FFFF"\;">Setting Name</th>" >> $
{WORK_DIR}/.ClientData.data
echo " <th style="background-color:"#00FFFF"\;">Default Value</th>" >> $
{WORK_DIR}/.ClientData.data
echo " <th style="background-color:"#00FFFF"\;">Current Value</th>" >> $
{WORK_DIR}/.ClientData.data
echo " </tr>" >> ${WORK_DIR}/.ClientData.data
}
footerStatus ()
{
echo "</table>" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "<p style="color:red\;"><b>SCC4 - Last changed BY: $scc4_lstchnguser
ON: $(formatDate $scc4_lstchngdate)</b></p>" >> ${WORK_DIR}/.ClientData.data
echo "<p style="color:red\;"><b>SE06 - Last changed BY: $se06_lstchnguser
ON: $(formatDate $se06_lstchngdate) $se06_lstchngtime</b></p>" >> $
{WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
echo "<p style="color:blue\;"><b>Scripted By: __APS (H156155)</b></p>" >> $
{WORK_DIR}/.ClientData.data
echo "</body>" >> ${WORK_DIR}/.ClientData.data
echo "</html>" >> ${WORK_DIR}/.ClientData.data
echo "" >> ${WORK_DIR}/.ClientData.data
}
prepareReport ()
{
if [[ ! -f /usr/sap/$SID/.current_backup.lock ]];then
headerStatus
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td "rowspan=10">$MANDT</td>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Client Description</td>" >> $
{WORK_DIR}/.ClientData.data
printMTEXT $DEF_MTEXT
printMTEXT $_MTEXT
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">City</td>" >> $
{WORK_DIR}/.ClientData.data
printORT01 $DEF_ORT01
printORT01 $_ORT01
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Currency</td>" >> $
{WORK_DIR}/.ClientData.data
printMWAER $DEF_MWAER
printMWAER $_MWAER
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Logical System</td>" >> $
{WORK_DIR}/.ClientData.data
printLOGSYS $DEF_LOGSYS
printLOGSYS $_LOGSYS
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Client role</td>" >> $
{WORK_DIR}/.ClientData.data
printCCCATEGORY $DEF_CCCATEGORY
printCCCATEGORY $_CCCATEGORY
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Changes and transports</td>" >> $
{WORK_DIR}/.ClientData.data
printCCCORACTIV $DEF_CCCORACTIV
printCCCORACTIV $_CCCORACTIV
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Cross Client Object Changes</td>"
>> ${WORK_DIR}/.ClientData.data
printCCNOCLIIND $DEF_CCNOCLIIND
printCCNOCLIIND $_CCNOCLIIND
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Client Copy and Comparison</td>" >>
${WORK_DIR}/.ClientData.data
printCCCOPYLOCK $DEF_CCCOPYLOCK
printCCCOPYLOCK $_CCCOPYLOCK
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">CATT and eCATT Restrictions</td>"
>> ${WORK_DIR}/.ClientData.data
printCCIMAILDIS $DEF_CCIMAILDIS
printCCIMAILDIS $_CCIMAILDIS
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
echo "<tr>" >> ${WORK_DIR}/.ClientData.data
echo "<td style="color:black\;">Protection against SAP
upgrade</td>" >> ${WORK_DIR}/.ClientData.data
printCCNOCASCAD $DEF_CCNOCASCAD
printCCNOCASCAD $_CCNOCASCAD
echo "</tr>" >> ${WORK_DIR}/.ClientData.data
#
if [[ ! -z "${_CCCATEGORY}" ]];then
sendSummary
else
echo "Nothing to report"
exit;
fi
fi
}
sendSummary (){
footerStatus
rm -f ${WORK_DIR}/.t1
rm -f ${WORK_DIR}/.t2
cat ${WORK_DIR}/.ClientData.data | /usr/sbin/sendmail -t
}
formatRawData (){
tr -s '"()' ' ' < ${WORK_DIR}/.CurrentSCC4Settings.dat > $
{WORK_DIR}/.CurrentSCC4Settings1.dat
tr -d " " < ${WORK_DIR}/.CurrentSCC4Settings1.dat > $
{WORK_DIR}/.CurrentSCC4Settings.dat
rm -f ${WORK_DIR}/.CurrentSCC4Settings1.dat
#
tr -s '"()' ' ' < ${WORK_DIR}/.SCC4_LastChange.dat > $
{WORK_DIR}/.SCC4_LastChange1.dat
tr -d " " < ${WORK_DIR}/.SCC4_LastChange1.dat > $
{WORK_DIR}/.SCC4_LastChange.dat
cat ${WORK_DIR}/.SCC4_LastChange.dat > ${WORK_DIR}/.scc4lastchngdat.dat
rm -f ${WORK_DIR}/.SCC4_LastChange1.dat
#
tr -s '"()' ' ' < ${WORK_DIR}/.SCC4MTEXT.dat > ${WORK_DIR}/.SCC4MTEXT1.dat
tr -d " " < ${WORK_DIR}/.SCC4MTEXT1.dat > ${WORK_DIR}/.SCC4MTEXT.dat
rm -f ${WORK_DIR}/.SCC4MTEXT1.dat
#
tr -s '"()' ' ' < ${WORK_DIR}/.SCC4ORT01.dat > $
{WORK_DIR}/.SCC4ORT011.dat
tr -d " " < ${WORK_DIR}/.SCC4ORT011.dat > ${WORK_DIR}/.SCC4ORT01.dat
rm -f ${WORK_DIR}/.SCC4ORT011.dat
#
tr -s '\\' ' ' < ${WORK_DIR}/.CurrentSE06Settings.dat > $
{WORK_DIR}/.CurrentSE06Settings1.dat
tr -s ':' ' ' < ${WORK_DIR}/.CurrentSE06Settings1.dat > $
{WORK_DIR}/.CurrentSE06Settings2.dat
tr -s '"()' ' ' < ${WORK_DIR}/.CurrentSE06Settings2.dat > $
{WORK_DIR}/.CurrentSE06Settings.dat
rm -f ${WORK_DIR}/.CurrentSE06Settings1.dat
rm -f ${WORK_DIR}/.CurrentSE06Settings2.dat
se06_lstchngdate=`cat ${WORK_DIR}/.CurrentSE06Settings.dat | head -1 | awk
'{print $6}'`
se06_lstchngtime=`cat ${WORK_DIR}/.CurrentSE06Settings.dat | head -1 | awk
'{print $8}'`
se06_lstchnguser=`cat ${WORK_DIR}/.CurrentSE06Settings.dat | head -1 | awk
'{print $12}'`
_myinput2=$se06_lstchngtime
_hour=`echo $_myinput2 | cut -c 1-2`
_min=`echo $_myinput2 | cut -c 3-4`
_sec=`echo $_myinput2 | cut -c 5-6`
se06_lstchngtime=`echo $_hour:$_min:$_sec`
#
scc4_lstchnguser=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f7`
scc4_lstchngdate=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f8`
prev_scc4_lstchnguser=`cat ${WORK_DIR}/.scc4lastchngdat.dat | cut -d','
-f1`
prev_scc4_lstchngdate=`cat ${WORK_DIR}/.scc4lastchngdat.dat | cut -d','
-f2`
chmod 777 ${WORK_DIR}/.*.dat
}
validatecurrentClientSettings (){
_First_Reminder="00"
_Second_Reminder="15"
_Third_Reminder="30"
_Four_Reminder="45"
# Current Values
_CCCATEGORY=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f1`
_CCCORACTIV=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f2`
_CCNOCLIIND=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f3`
_CCCOPYLOCK=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f4`
_CCIMAILDIS=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f5`
_CCNOCASCAD=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f6`
_MTEXT=`cat ${WORK_DIR}/.SCC4MTEXT.dat | tr -d '[:blank:]'`
_ORT01=`cat ${WORK_DIR}/.SCC4ORT01.dat | tr -d '[:blank:]'`
_MWAER=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f9`
_LOGSYS=`cat ${WORK_DIR}/.CurrentSCC4Settings.dat | cut -d',' -f10`
#
if [[ ! "${_MTEXT}" = "${DEF_MTEXT}" ]] || [[ ! "${_ORT01}" = "$
{DEF_ORT01}" ]] || [[ ! "${_MWAER}" = "${DEF_MWAER}" ]] || [[ ! "${_LOGSYS}" = "$
{DEF_LOGSYS}" ]] || [[ ! "${_CCCATEGORY}" = "${DEF_CCCATEGORY}" ]] || [[ ! "$
{_CCCORACTIV}" = "${DEF_CCCORACTIV}" ]] || [[ ! "${_CCNOCLIIND}" = "$
{DEF_CCNOCLIIND}" ]] || [[ ! "${_CCCOPYLOCK}" = "${DEF_CCCOPYLOCK}" ]] || [[ ! "$
{_CCIMAILDIS}" = "${DEF_CCIMAILDIS}" ]] || [[ ! "${_CCNOCASCAD}" = "$
{DEF_CCNOCASCAD}" ]] || [[ ! "${prev_scc4_lstchnguser}" = "${scc4_lstchnguser}" ]]
|| [[ ! "${prev_scc4_lstchngdate}" = "${scc4_lstchngdate}" ]];then
_cstat="Changed"
#_cur_time=`date +%H:%M`
_cur_time=`date +%M`
if [[ ! -f /usr/sap/$SID/.current_backup.lock ]];then
prepareReport
echo "$_timestamp" > /usr/sap/$SID/.current_backup.lock
echo "Client ${MANDT} has been changed recently and does
not have default settings. Email has been sent to stakeholders"
exit 0;
elif [[ "${_cur_time}" = "${_First_Reminder}" ]] || [[ "$
{_cur_time}" = "${_Second_Reminder}" ]] || [[ "${_cur_time}" = "${_Third_Reminder}"
]] || [[ "${_cur_time}" = "${_Four_Reminder}" ]];then
rm -f ${WORK_DIR}/.t1 ${WORK_DIR}/.t2
cat ${WORK_DIR}/.ClientData.data |
/usr/sbin/sendmail -t
echo "Client ${MANDT} has been changed recently and does
not have default settings. Reminder mail has been sent to stakeholders"
exit 4;
else
echo "Client ${MANDT} has been changed recently
and does not have default settings. Reminder mail will be sent to stakeholders"
exit 4;
fi
elif [[ -f /usr/sap/$SID/.current_backup.lock ]];then
rm -f /usr/sap/$SID/.current_backup.lock
_cstat="Reverted Back"
prepareReport
echo "Client ${MANDT} has been reverted back with default settings.
confirmation mail has been sent to stakeholders"
exit 0;
else
echo "Client ${MANDT} has not been changed recently and has default
settings. That's great... Bye"
exit 0;
fi
}
fetchCurrentClientSettings (){
RC=8
testDBconnection
if [[ "${RC}" = 0 ]];then
if [[ -f ${WORK_DIR}/.CurrentSCC4Settings.dat ]] && [[ -f $
{WORK_DIR}/.SCC4_LastChange.dat ]] && [[ -f ${WORK_DIR}/.CurrentSE06Settings.dat ]]
&& [[ -f ${WORK_DIR}/.SCC4MTEXT.dat ]] && [[ -f ${WORK_DIR}/.SCC4ORT01.dat ]];then
chown -R "${SIDADM}":sapsys ${WORK_DIR}

chmod -R 755 ${WORK_DIR}


execSQL
_timestamp=`date +'%m-%d-%Y %H:%M %Z'`
formatRawData
validatecurrentClientSettings
rm -f ${WORK_DIR}/.t1
rm -f ${WORK_DIR}/.t2
else
su - $SIDADM -c "touch $
{WORK_DIR}/.CurrentSCC4Settings.dat"
su - $SIDADM -c "touch ${WORK_DIR}/.SCC4_LastChange.dat"
su - $SIDADM -c "touch $
{WORK_DIR}/.CurrentSE06Settings.dat"
su - $SIDADM -c "touch ${WORK_DIR}/.SCC4MTEXT.dat"
su - $SIDADM -c "touch ${WORK_DIR}/.SCC4ORT01.dat"
chown -R "${SIDADM}":sapsys ${WORK_DIR}
chmod -R 755 ${WORK_DIR}
execSQL
_timestamp=`date +'%m-%d-%Y %H:%M %Z'`
formatRawData
validatecurrentClientSettings
rm -f ${WORK_DIR}/.t1
rm -f ${WORK_DIR}/.t2
fi
else
exit 8;
fi
}
main (){
myNAME=$(basename $0)
runDuplicateCheck $myNAME
if [[ $# -ge 4 ]];then
MY_SID=$1
MANDT=$2
MY_SCHEMA=$(echo $3 | tr 'a-z' 'A-Z')
MY_SECKEY=$4
MY_SSL=$(echo $5 | tr 'a-z' 'A-Z')
SID=`echo ${MY_SID} | tr 'a-z' 'A-Z'`
LSID=`echo ${SID} | tr 'A-Z' 'a-z'`
SIDADM="${LSID}adm"
cur_host=$(uname -n)
if [[ -d ${WORK_DIR} ]];then
chown -R $SIDADM:sapsys ${WORK_DIR}
RC=$?
if [[ ! "${RC}" = "0" ]];then
echo "***ERROR: Please provide working directory by editing
the script header and continue later***"
exit 8;
fi
else
echo "***ERROR: Please provide working directory by editing the
script header and continue later***"
exit 8;
fi
testDBconnection
if [[ "${RC}" = 0 ]];then
fetchCurrentClientSettings
else
RC=8
echo "***ERROR in main, please check the HANA database status,
script thinks HANA DB is down***"
exit $RC
fi
else
echo "You need to provide SID CLIENT SCHEMA SECUREKEY and
optionally SSL (Y/N) while calling the script. like $(basename $0) SID CLIENT
SCHEMA SECUREKEY Y/N, Thanks"
exit 8;
fi
}
main $1 $2 $3 $4 $5

You might also like