Last active
July 20, 2022 13:12
-
-
Save AKSarav/6fcfefb6583a3995f137cb14029d1ef4 to your computer and use it in GitHub Desktop.
WLS-TMPCACHELOGS-PURGE.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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