# -------------------------------------------------------------------------------------------
# sfs - s.earch f.ile s.ize
# sfs Version: 1.1
# Github: https://github.com/InterGenStudios/sfs
# ---------------------------------------------------
# InterGenStudios: 5-3-15
# Copyright (c) 2015: Christopher 'InterGen' Cork InterGenStudios
# URL: https://intergenstudios.com
# --------------------------------
# License: GPL-2.0+
# URL: http://opensource.org/licenses/gpl-license.php
# ---------------------------------------------------
# sfs is free software:
#
Prodigal Son Ku Klux Klan Caught You
# GNU General Public License as published by the Free Software
# Foundation, either version 2 of the License, or (at your discretion)
# any later version.
# ------------------
###########################################
##---------------------------------------##
## BEGIN
##---------------------------------------##
###########################################
# Sets sfs version number
vers=1.1
# Simple regex for number checking
RE='^[0-9]+$'
# Sets timestamp
stamp="$(echo $(date +"%m-%d-%Y") $(date +"%T"))"
#########################################
##-------------------------------------##
## END
##-------------------------------------##
#########################################
#######################
##-------------------##
## BEGIN
##-------------------##
#######################
# Colors trailing text Red
RED="\e[1m\e[31m"
# Colors trailing text Green
GREEN="\e[1m\e[32m"
# Colors trailing text Yellow
YELLOW="\e[1m\e[33m"
# Colors trailing text Blue
BLUE="\e[1m\e[34m"
# Colors trailing text Bold White
WHITE="\e[1m\e[37m"
# Removes any previously set colors
NOCOLOR="\e[0m"
# A simple divider
SEPARATOR () {
echo -e "\n\n${BLUE}------------------------------------------------------------------------------${NOCOLOR}\n\n"
}
# Creates uniform
Krrish 3 (2013) - DVDScr - XviD - ESubs - 2CD - [DDR] - To block his ruthless ambitions -- Krishna must become Krrish. Prodigal Son Ku Klux Klan Caught You Dancing Sound System Handsworth Revolution Revolution Dub Taxi Driver Don't Give In Prediction Heart Of Stone Sound Check Bun Dem Reggae Fever Tribute To The Martyrs State Of Emergency Macka Spiaff Back To My Roots The.
Also have a look
HEADER () {
echo -e "\n\n${BLUE}______________________________________________________________________________________________${NOCOLOR}\n"
echo -e "${WHITE} sfs v${GREEN}$vers${NOCOLOR}"
echo -e "${BLUE}______________________________________________________________________________________________${NOCOLOR}\n\n"
}
HELPTEXT () {
clear
HEADER
echo -e "${GREEN}sfs help:${NOCOLOR}\n"
echo "SFS is a simple cPanel server utility for finding files of a target size"
echo -e "and pastebinning the results.\n"
echo -e "------------------\n"
echo -e "${GREEN}USAGE:${NOCOLOR}\n"
echo -e "sfs ...[${GREEN}target_directory${NOCOLOR}] [${GREEN}target_file_size${NOCOLOR}] | ...[${GREEN}target_directory${NOCOLOR}] | ${GREEN}-h ${NOCOLOR}(runs helptext)\n\n"
exit 0
}
GET_TARGET_FILESIZE () {
clear
HEADER
echo -e -n " ${GREEN}In ${WHITE}MB, ${GREEN}enter target file size${NOCOLOR} [Default = 100]: "
read TARGETSIZE
if [ -z "$TARGETSIZE" ]; then
SIZE=100
sleep 1
elif ! [[ $TARGETSIZE =~ $RE ]]; then
echo
echo -e "\n${RED}WARNING!${NOCOLOR}\n\n"
echo -e "${WHITE}$TARGETSIZE ${GREEN}isn't a number-size in MB.\n Restarting...${NOCOLOR}"
sleep 2
GET_TARGET_FILESIZE
else
SIZE="$TARGETSIZE"
sleep 1
fi
}
LOOP () {
echo -e "\n ${RED}WARNING!${NOCOLOR}\n"
echo -e " ${WHITE}$CHOICE ${GREEN}isn't a valid path on this server.\n"
sleep 1
echo -e " ${GREEN}Please double check that you want to search.${NOCOLOR}\n\n (Restarting...)"
SEPARATOR
sleep 1
GET_TARGET_FILESIZE
}
SEARCH () {
# Default search size
SEARCHSIZE=$(($SIZE * 1000))
tput cuu 2 && tput el
echo -e "\n\n ${GREEN}Server: ${WHITE}$HOSTNAME ${NOCOLOR}$stamp"
SEPARATOR
echo -e " ${GREEN}Searching recursively in ${WHITE}$TARGET_DIR ${GREEN}for files ${WHITE}>= $SIZE${GREEN}M${NOCOLOR}"
SEPARATOR
find "$TARGET_DIR" -type f -size +"$SEARCHSIZE"k -exec ls -lh {} \; 2>/dev/null | awk '{ printf "%- 130s %s\n", $9,$5; }'
echo -e "\n\n ${GREEN}Total Size of ${WHITE}$TARGET_DIR${GREEN}: ${WHITE}$DIR_SIZE${NOCOLOR}\n"
COUNT_FILES
echo "
SEPARATOR
printf "\n\n"
}
PASTE () {
PASTEFILE=$@;
curl -d name=sfs -d private=1 --data-urlencode text@"$PASTEFILE" -s https://paste.intergen.online/api/create > TEMPASTE
sed -i 's/view/view\/raw/g' TEMPASTE
SEPARATOR
echo -e " ${GREEN}Your results are at${WHITE}:\n"
echo -e " ${BLUE} ====> ${WHITE}$(cat TEMPASTE)${NOCOLOR}\n\n ${GREEN}Your paste
SEPARATOR
rm TEMPASTE
}
GET_FILECOUNTER_CHOICE () {
clear
HEADER
echo -e -n " ${GREEN}Find
read FILE_COUNTER
}
# Checks for FILESEARCH flag
CHECK_FILECOUNTER_CHOICE () {
if [ -z "$FILE_COUNTER" ] || [ "$FILE_COUNTER" = "N" ] || [ "$FILE_COUNTER" = "n" ]; then
FILECOUNTER=NO
echo -e "\n ${YELLOW}FILECOUNTER SKIPPED\n ${NOCOLOR}Getting target directory size..."
elif [[ $FILE_COUNTER =~ $RE ]]; then
echo -e "\n ${RED}WARNING!\n ${NOCOLOR}Incorrect entry...\nRestarting..."
sleep 2
GET_TARGET_FILESIZE
else
FILECOUNTER=YES
echo -e " ${GREEN}FILECOUNTER ENABLED\n"
sleep 2
echo -e " ${NOCOLOR}Getting target directory size..."
fi
}
# Counts # of files if target directory
COUNT_FILES () {
if [ "$FILECOUNTER" = "YES" ]; then
TOTAL_FILE_COUNT="$(echo $(($(du -ah "$TARGET_DIR" 2>/dev/null | wc -l) - 1)))"
echo -e "\n ${GREEN}Total number of files in ${WHITE}$TARGET_DIR${GREEN}: ${WHITE}$TOTAL_FILE_COUNT${NOCOLOR}\n"
fi
}
CHECK_TARGET_DIR_EXISTS () {
if [ ! -d "$TARGET_DIR" ]; then
LOOP
fi
}
GET_TARGET_DIR () {
clear
HEADER
echo -e " ${GREEN}Enter target search path or choose
echo -e " ${WHITE}1) ${GREEN}/home Directory${NOCOLOR}"
echo -e " ${WHITE}2) ${GREEN}/var/log Directory${NOCOLOR}"
echo -e " ${WHITE}3) ${GREEN}/usr/local/cpanel/logs Directory${NOCOLOR}"
echo -e " ${WHITE}4) ${GREEN}/var/lib/mysql Directory${NOCOLOR}"
echo -e " ${WHITE}5) ${GREEN}/backup Directory${NOCOLOR}\n"
echo -e " ${WHITE}( ${GREEN}default${WHITE} =${GREEN} / Root Directory${WHITE} )\n"
echo -n " [enter choice or directory path]: "
read DIR_CHOICE
case "$DIR_CHOICE" in
1) TARGET_DIR=/home;;
2) TARGET_DIR=/var/log;;
3) TARGET_DIR=/usr/local/cpanel/logs;;
4) TARGET_DIR=/var/lib/mysql;;
5) TARGET_DIR=/backup;;
*) if [ -z "$DIR_CHOICE" ]; then
TARGET_DIR=/
elif ! [[ $DIR_CHOICE =~ $RE ]]; then
TARGET_DIR=$DIR_CHOICE
fi;;
esac
}
GET_INPUT () {
GET_TARGET_FILESIZE
GET_TARGET_DIR
GET_FILECOUNTER_CHOICE
CHECK_FILECOUNTER_CHOICE
}
#####################
##-----------------##
## END
##-----------------##
#####################
#############################################
##-----------------------------------------##
## BEGIN
##-----------------------------------------##
#############################################
if [ "$(id -u)" != "0" ]; then
echo -e "\n\n${RED}${BLINK}--------${NOCOLOR}"
echo -e "${RED}${BLINK}WARNING!${NOCOLOR}"
echo -e "${RED}${BLINK}--------${NOCOLOR}\n\n"
echo -e "${WHITE}sfs must be run as ${RED}root${NOCOLOR}\n\n"
echo -e "${GREEN}(Exiting now...)${NOCOLOR}\n\n"
exit 1
fi
###########################################
##---------------------------------------##
## END
##---------------------------------------##
###########################################
#########################
##---------------------##
## BEGIN
##---------------------##
#########################
if [ "$1" = "-h" ]; then
HELPTEXT
else
if [ -z $1 ]; then
GET_INPUT
else
if [ -d $1 ] && [[ $2 =~ $RE ]]; then
TARGET_DIR="$1"
SIZE="$2"
GET_FILECOUNTER_CHOICE
CHECK_FILECOUNTER_CHOICE
elif [ -d $1 ] && [ -z $2 ]; then
TARGET_DIR="$1"
GET_TARGET_FILESIZE
GET_FILECOUNTER_CHOICE
CHECK_FILECOUNTER_CHOICE
fi
fi
fi
CHECK_TARGET_DIR_EXISTS
DIR_SIZE="$(du -h $TARGET_DIR 2>/dev/null | tail -1 | awk '{print $1}')"
mkdir -p /root/support/logs/sfs_logs
clear
HEADER
SEARCH 2>&1 | tee searchfile
sed -i -e 's/[\x01-\x1F\x7F]//g' -e 's|\[1m\[32m||g' -e 's|(B\[m||g' -e 's|\[1m\[34m||g' -e 's|\[2A\[K||g' -e 's|\[1m\[37m||g' -e 's|\[0m||g' searchfile
PASTE searchfile
mv searchfile /root/support/logs/sfs_logs/sfs_"$HOSTNAME"_"$(date +"%m-%d-%Y_%T")"
printf "\n\n"
#######################
##-------------------##
## END
##-------------------##
#######################
exit 0