Skip to content

Instantly share code, notes, and snippets.

@AKSarav
Last active July 20, 2022 13:12
Show Gist options
  • Save AKSarav/6fcfefb6583a3995f137cb14029d1ef4 to your computer and use it in GitHub Desktop.
Save AKSarav/6fcfefb6583a3995f137cb14029d1ef4 to your computer and use it in GitHub Desktop.
WLS-TMPCACHELOGS-PURGE.sh
#!/bin/bash
# Name : WLS-TMPCACHELOGS-PURGE.sh
# Author : SaravAK
# Date : 4-21-2017
## DECLARATION SECTION
if [ "$(whoami)" != "weblogic" ]; then
echo "Script must be run as user: weblogic"
exit -1
fi
BASE_DIR=`dirname $0`
SCRIPT_PID=`echo $$`
HOST=`uname -n`
INDOC=${BASE_DIR}/"Connpool.out"
LOG_DATE=`date +%y%m%d`
# set -n ## UNCOMMENT TO PERFORM SYNTAX CHECK
# set -x ## UNCOMMENT TO DEBUG THE SCRIPT
## SCRIPT OUT
OUT_DIR=$BASE_DIR/logs
OUT_FILE=${OUT_DIR}/OUT_${LOG_DATE}
touch ${OUT_FILE}
## SCRIPT LOGGING FUNCTION
function OUT
{
# THIS FUNCTION IS TO COVER THE OUTPUT OF THE SHELL SCRIPT
echo " "`date +%H:%M:%S" "%d"-"%b"-"%y` $1 |tee -a ${OUT_FILE}
}
## PID CAPTURE
echo ${SCRIPT_PID} > $BASE_DIR/pid.txt
DOMAINSLIST=`find /opt/weblogic/domains/. -maxdepth 1 -type d|grep -v '\.$'|sed 's/\.\///g'`
DOMAINNAMES=`find /opt/weblogic/domains/. -maxdepth 1 -type d|grep -v '\.$'|sed 's/\.\///g'`
DOMAINS=[]
i=0
for ENTRY in $DOMAINSLIST; do
DOMAINS[$i]=$ENTRY
i=$i+1
done
function ACTION
{
echo ${!choices[@]}
for choice in ${!choices[@]}; do
OUT "YOU HAVE SELECTED ${DOMAINS[$choice]} DOMAIN"
done
main
}
## MAIN
function main
{
for choice in ${!choices[@]};
do
DOMAIN=${DOMAINS[$choice]}
OUT "PROCESSING DOMAIN => $DOMAIN <="
OUT " "
OUT "GETTING THE DATA"
TMPDIRS=`find $DOMAIN/servers -type d -name "tmp"`
CACHEDIRS=`find $DOMAIN/servers -type d -name "cache"`
LOGSDIRS=`find $DOMAIN/servers -type d -name "logs"`
OUT "========================================"
OUT ""
OUT "-------------- TAKING CARE OF TMP DIRECTORIES --------------"
for DIR in $TMPDIRS
do
OUT "========================================"
OUT "CURRENT DIR: $DIR"
ZIPFILE="$DIR-$(date +%F_%R).tar.gz"
OUT "ARCHIVING THE TMP DIRECTORY TO $ZIPFILE"
tar -zcvf $ZIPFILE $DIR >/dev/null 2>&1
if [ $? -eq 0 ]
then
OUT "ARCHIVING COMPLETED SUCCESSFULLY"
OUT "REMOVING THE CONTENT OF $DIR"
rm -rf $DIR/*
if [ $? -eq 0 ]
then
OUT "SUCCESSFULLY REMOVED THE CONTENT OF TMPDIR $DIR"
else
OUT "ATTENTION: FAILED TO REMOVE THE CONTENT TMPDIR $DIR"
fi
else
OUT "ATTENTION: ARCHIVING FAILED FOR $ZIPFILE"
fi
OUT "========================================"
done
OUT "========================================"
OUT ""
OUT "-------------- TAKING CARE OF CACHE DIRECTORIES --------------"
for DIR in $CACHEDIRS
do
OUT "========================================"
OUT "CURRENT DIR: $DIR"
ZIPFILE="$DIR-$(date +%F_%R).tar.gz"
OUT "ARCHIVING THE CACHE DIRECTORY TO $ZIPFILE"
tar -zcvf $ZIPFILE $DIR >/dev/null 2>&1
if [ $? -eq 0 ]
then
OUT "ARCHIVING COMPLETED SUCCESSFULLY"
OUT "REMOVING THE CONTENT OF $DIR"
rm -rf $DIR/*
if [ $? -eq 0 ]
then
OUT "SUCCESSFULLY REMOVED THE CONTENT OF CACHEDIR $DIR"
else
OUT "ATTENTION: FAILED TO REMOVE THE CONTENT CACHEDIR $DIR"
fi
else
OUT "ATTENTION: ARCHIVING FAILED FOR $ZIPFILE"
fi
OUT "========================================"
done
OUT "========================================"
OUT ""
OUT "-------------- TAKING CARE OF CACHE DIRECTORIES --------------"
for DIR in $LOGSDIRS
do
OUT "========================================"
OUT "CURRENT DIR: $DIR"
OUT "SEARCHING FOR THE FILES TO ZIP IN THE DIRECTORY...."
LOGFILESTOZIP=`find $DIR -maxdepth 1 -type f ! -name "*.gz"`
for LOGFILE in $LOGFILESTOZIP
do
ZIPFILE="$LOGFILE.gz"
OUT "COMPRESSING THE LOGFILE $LOGFILE TO $ZIPFILE"
gzip $LOGFILE >/dev/null 2>&1
if [ -e $ZIPFILE ]
then
OUT "COMPRESSED THE LOG FILE $LOGFILE"
else
OUT "FAILURE: COMPRESSING THE LOG FILE $LOGFILE"
fi
done
OUT "========================================"
done
OUT "========================================"
done
}
#Clear screen for menu
clear
cat <<ENDOFMESSAGE
=====================================================
--- WLS CACHE - LOGS - TMP PURGING TOOL ---
=====================================================
ATTENTION: PLEASE MAKE SURE THE SELECTED DOMAINS
ARE SHUTDOWN BEFORE SUBMITTING, REMOVING THE
DIRECTORIES OF RUNNING DOMAIN MAY CRASH THE SERVER
=====================================================
VALID INPUTS:
Domain Number : Menu will be showing Numbers for
every domain, if you want to select
the domain press the corresponding
number displayed near the domain name
re enter the same number to unselect
D : DESELECTALL available domains & Reset
S : SELECTALL available domains
- : TO SUBMIT once you have selected your
desired domains
=======================================================
ENDOFMESSAGE
read -p "Press Enter to contiue :" tmp
clear
#Menu function
function MENU {
echo "Menu Options"
for NUM in ${!DOMAINS[@]}; do
echo "[""${choices[NUM]:- }""]" $(( NUM+1 ))") ${DOMAINS[NUM]}"
done
echo "$ERROR"
}
#Menu loop
while MENU && read -e -p "Select the desired options using their number (again to uncheck, ENTER to Continue, Press - and ENTER Once Done): " SELECTION;
do
clear
if [[ "$SELECTION" == *[[:digit:]]* && $SELECTION -ge 1 && $SELECTION -le ${#DOMAINS[@]} || "$SELECTION" == "-" || "$SELECTION" == "S" || "$SELECTION" == "D" ]]; then
if [[ $SELECTION == *[[:digit:]]* ]];
then
(( SELECTION-- ))
if [[ "${choices[SELECTION]}" == "+" ]]; then
choices[SELECTION]=""
unset choices[$SELECTION]
else
choices[SELECTION]="+"
fi
elif [[ "$SELECTION" == "-" ]]; then
echo "THANKS FOR SELECTING THE DOMAINS - PLEASE WAIT"
break
elif [[ "$SELECTION" == "S" ]]; then
echo "ALL DOMAINS WILL BE SELECTED "
i=0
while [[ $i -lt ${#DOMAINS[@]} ]];
do
#SELECTION=$i
choices[SELECTION]="+"
(( SELECTION++ ))
(( i++ ))
done
continue
elif [[ "$SELECTION" == "D" ]]; then
echo "ALL DOMAINS WILL BE DESELECTED "
i=0
while [[ $i -lt ${#DOMAINS[@]} ]];
do
choices[SELECTION]=""
unset choices[$SELECTION]
(( SELECTION++ ))
(( i++ ))
done
continue
fi
ERROR=" "
else
ERROR="Invalid option: $SELECTION"
fi
done
ACTION
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment