sfs.sh

From InterGen, 8 Years ago, written in Bash, viewed 2'951 times.
URL https://paste.intergen.online/view/15d5c2b9 Embed Show code
Download Paste or View Raw
  1. #!/bin/bash
  2. # -------------------------------------------------------------------------------------------
  3. # sfs - s.earch f.ile s.ize and create a pastebin of the results
  4. # sfs Version: 1.1
  5. # ---------------------------------------------------
  6. # InterGenStudios: 5-3-15
  7. # Copyright (c) 2015: Christopher 'InterGen' Cork  InterGenStudios
  8. # --------------------------------
  9. # License: GPL-2.0+
  10. # ---------------------------------------------------
  11. # sfs is free software:
  12. # You may redistribute it and/or modify it under the terms of the
  13. # GNU General Public License as published by the Free Software
  14. # Foundation, either version 2 of the License, or (at your discretion)
  15. # any later version.
  16. # ------------------
  17.  
  18.  
  19. ###########################################
  20. ##---------------------------------------##
  21. ## BEGIN - INITIAL VARIABLE DECLARATIONS ##
  22. ##---------------------------------------##
  23. ###########################################
  24.  
  25. # Sets sfs version number
  26. vers=1.1
  27.  
  28. # Simple regex for number checking
  29. RE='^[0-9]+$'
  30.  
  31. # Sets timestamp
  32. stamp="$(echo $(date +"%m-%d-%Y") $(date +"%T"))"
  33.  
  34. #########################################
  35. ##-------------------------------------##
  36. ## END - INITIAL VARIABLE DECLARATIONS ##
  37. ##-------------------------------------##
  38. #########################################
  39.  
  40. #######################
  41. ##-------------------##
  42. ## BEGIN - FUNCTIONS ##
  43. ##-------------------##
  44. #######################
  45.  
  46. # Colors trailing text Red
  47. RED="\e[1m\e[31m"
  48.  
  49. # Colors trailing text Green
  50. GREEN="\e[1m\e[32m"
  51.  
  52. # Colors trailing text Yellow
  53. YELLOW="\e[1m\e[33m"
  54.  
  55. # Colors trailing text Blue
  56. BLUE="\e[1m\e[34m"
  57.  
  58. # Colors trailing text Bold White
  59. WHITE="\e[1m\e[37m"
  60.  
  61. # Removes any previously set colors
  62. NOCOLOR="\e[0m"
  63.  
  64. # A simple divider
  65. SEPARATOR () {
  66.  
  67.     echo -e "\n\n${BLUE}------------------------------------------------------------------------------${NOCOLOR}\n\n"
  68.  
  69. }
  70.  
  71. # Creates uniform look during script execution when called after any clear command
  72. HEADER () {
  73.  
  74.     echo -e "\n\n${BLUE}______________________________________________________________________________________________${NOCOLOR}\n"
  75.     echo -e "${WHITE}    sfs v${GREEN}$vers${NOCOLOR}"
  76.     echo -e "${BLUE}______________________________________________________________________________________________${NOCOLOR}\n\n"
  77.  
  78. }
  79.  
  80. HELPTEXT () {
  81.  
  82.     clear
  83.     HEADER
  84.     echo -e "${GREEN}sfs help:${NOCOLOR}\n"
  85.     echo "SFS is a simple cPanel server utility for finding files of a target size"
  86.     echo -e "and pastebinning the results.\n"
  87.     echo -e "------------------\n"
  88.     echo -e "${GREEN}USAGE:${NOCOLOR}\n"
  89.     echo -e "sfs  ...[${GREEN}target_directory${NOCOLOR}] [${GREEN}target_file_size${NOCOLOR}]   |   ...[${GREEN}target_directory${NOCOLOR}]  |  ${GREEN}-h ${NOCOLOR}(runs helptext)\n\n"
  90.     exit 0
  91.  
  92. }
  93.  
  94. GET_TARGET_FILESIZE () {
  95.  
  96.     clear
  97.     HEADER
  98.     echo -e -n "  ${GREEN}In ${WHITE}MB, ${GREEN}enter target file size${NOCOLOR} [Default = 100]: "
  99.     read TARGETSIZE
  100.     if [ -z "$TARGETSIZE" ]; then
  101.         SIZE=100
  102.         sleep 1
  103.     elif ! [[ $TARGETSIZE =~ $RE ]]; then
  104.         echo
  105.         echo -e "\n${RED}WARNING!${NOCOLOR}\n\n"
  106.         echo -e "${WHITE}$TARGETSIZE ${GREEN}isn't a number-size in MB.\n  Restarting...${NOCOLOR}"
  107.         sleep 2
  108.         GET_TARGET_FILESIZE
  109.     else
  110.         SIZE="$TARGETSIZE"
  111.         sleep 1
  112.     fi
  113.  
  114. }
  115.  
  116. LOOP () {
  117.  
  118.     echo -e "\n  ${RED}WARNING!${NOCOLOR}\n"
  119.     echo -e "  ${WHITE}$CHOICE ${GREEN}isn't a valid path on this server.\n"
  120.     sleep 1
  121.     echo -e "  ${GREEN}Please double check that you want to search.${NOCOLOR}\n\n  (Restarting...)"
  122.     SEPARATOR
  123.     sleep 1
  124.     GET_TARGET_FILESIZE
  125.  
  126. }
  127.  
  128. SEARCH () {
  129.  
  130.     # Default search size
  131.     SEARCHSIZE=$(($SIZE * 1000))
  132.     tput cuu 2 && tput el
  133.     echo -e "\n\n  ${GREEN}Server: ${WHITE}$HOSTNAME ${NOCOLOR}$stamp"
  134.     SEPARATOR
  135.     echo -e "  ${GREEN}Searching recursively in ${WHITE}$TARGET_DIR ${GREEN}for files ${WHITE}>= $SIZE${GREEN}M${NOCOLOR}"
  136.     SEPARATOR
  137.     find "$TARGET_DIR" -type f -size +"$SEARCHSIZE"k -exec ls -lh {} \; 2>/dev/null | awk '{ printf "%- 130s %s\n", $9,$5; }'
  138.     echo -e "\n\n  ${GREEN}Total Size of ${WHITE}$TARGET_DIR${GREEN}: ${WHITE}$DIR_SIZE${NOCOLOR}\n"
  139.     COUNT_FILES
  140.     echo "  Search Complete"
  141.     SEPARATOR
  142.     printf "\n\n"
  143.  
  144. }
  145.  
  146. PASTE () {
  147.  
  148.     PASTEFILE=$@;
  149.     curl -d name=sfs -d private=1 --data-urlencode text@"$PASTEFILE" -s https://paste.intergen.online/api/create > TEMPASTE
  150.     sed -i 's/view/view\/raw/g' TEMPASTE
  151.     SEPARATOR
  152.     echo -e "  ${GREEN}Your results are at${WHITE}:\n"
  153.     echo -e "  ${BLUE}  ====> ${WHITE}$(cat TEMPASTE)${NOCOLOR}\n\n  ${GREEN}Your paste will expire in 30 days${NOCOLOR}"
  154.     SEPARATOR
  155.     rm TEMPASTE
  156.  
  157. }
  158.  
  159. GET_FILECOUNTER_CHOICE () {
  160.  
  161.     clear
  162.     HEADER
  163.     echo -e -n "  ${GREEN}Find the number of total files in the ${WHITE}TARGET DIRECTORY${NOCOLOR} [${WHITE}y/N${NOCOLOR}]? "
  164.     read FILE_COUNTER
  165.  
  166. }
  167.  
  168. # Checks for FILESEARCH flag
  169. CHECK_FILECOUNTER_CHOICE () {
  170.  
  171.     if [ -z "$FILE_COUNTER" ] || [ "$FILE_COUNTER" = "N" ] || [ "$FILE_COUNTER" = "n" ]; then
  172.         FILECOUNTER=NO
  173.         echo -e "\n  ${YELLOW}FILECOUNTER SKIPPED\n  ${NOCOLOR}Getting target directory size..."
  174.     elif [[ $FILE_COUNTER =~ $RE ]]; then
  175.         echo -e "\n  ${RED}WARNING!\n  ${NOCOLOR}Incorrect entry...\nRestarting..."
  176.         sleep 2
  177.         GET_TARGET_FILESIZE
  178.     else
  179.         FILECOUNTER=YES
  180.         echo -e "  ${GREEN}FILECOUNTER ENABLED\n"
  181.         sleep 2
  182.         echo -e "  ${NOCOLOR}Getting target directory size..."
  183.     fi
  184.  
  185. }
  186.  
  187. # Counts # of files if target directory
  188. COUNT_FILES () {
  189.  
  190.     if [ "$FILECOUNTER" = "YES" ]; then
  191.         TOTAL_FILE_COUNT="$(echo $(($(du -ah "$TARGET_DIR" 2>/dev/null | wc -l) - 1)))"
  192.         echo -e "\n  ${GREEN}Total number of files in ${WHITE}$TARGET_DIR${GREEN}: ${WHITE}$TOTAL_FILE_COUNT${NOCOLOR}\n"
  193.     fi
  194.  
  195. }
  196.  
  197. CHECK_TARGET_DIR_EXISTS () {
  198.  
  199.     if [ ! -d "$TARGET_DIR" ]; then
  200.         LOOP
  201.     fi
  202.  
  203. }
  204.  
  205. GET_TARGET_DIR () {
  206.  
  207.     clear
  208.     HEADER
  209.     echo -e "  ${GREEN}Enter target search path or choose from the list below${WHITE}:${NOCOLOR}\n"
  210.     echo -e "  ${WHITE}1) ${GREEN}/home Directory${NOCOLOR}"
  211.     echo -e "  ${WHITE}2) ${GREEN}/var/log Directory${NOCOLOR}"
  212.     echo -e "  ${WHITE}3) ${GREEN}/usr/local/cpanel/logs Directory${NOCOLOR}"
  213.     echo -e "  ${WHITE}4) ${GREEN}/var/lib/mysql Directory${NOCOLOR}"
  214.     echo -e "  ${WHITE}5) ${GREEN}/backup Directory${NOCOLOR}\n"
  215.     echo -e "  ${WHITE}( ${GREEN}default${WHITE} =${GREEN} / Root Directory${WHITE} )\n"
  216.     echo -n "  [enter choice or directory path]: "
  217.     read DIR_CHOICE
  218.     case "$DIR_CHOICE" in
  219.               1) TARGET_DIR=/home;;
  220.               2) TARGET_DIR=/var/log;;
  221.               3) TARGET_DIR=/usr/local/cpanel/logs;;
  222.               4) TARGET_DIR=/var/lib/mysql;;
  223.               5) TARGET_DIR=/backup;;
  224.               *) if [ -z "$DIR_CHOICE" ]; then
  225.                     TARGET_DIR=/
  226.                  elif ! [[ $DIR_CHOICE =~ $RE ]]; then
  227.                     TARGET_DIR=$DIR_CHOICE
  228.                  fi;;
  229.     esac
  230.  
  231. }
  232.  
  233. GET_INPUT () {
  234.  
  235.     GET_TARGET_FILESIZE
  236.     GET_TARGET_DIR
  237.     GET_FILECOUNTER_CHOICE
  238.     CHECK_FILECOUNTER_CHOICE
  239.  
  240. }
  241.  
  242. #####################
  243. ##-----------------##
  244. ## END - FUNCTIONS ##
  245. ##-----------------##
  246. #####################
  247.  
  248. #############################################
  249. ##-----------------------------------------##
  250. ## BEGIN - MAKE SURE WE'RE RUNNING AS ROOT ##
  251. ##-----------------------------------------##
  252. #############################################
  253.  
  254. if [ "$(id -u)" != "0" ]; then
  255.     echo -e "\n\n${RED}${BLINK}--------${NOCOLOR}"
  256.     echo -e "${RED}${BLINK}WARNING!${NOCOLOR}"
  257.     echo -e "${RED}${BLINK}--------${NOCOLOR}\n\n"
  258.     echo -e "${WHITE}sfs must be run as ${RED}root${NOCOLOR}\n\n"
  259.     echo -e "${GREEN}(Exiting now...)${NOCOLOR}\n\n"
  260.     exit 1
  261. fi
  262.  
  263. ###########################################
  264. ##---------------------------------------##
  265. ## END - MAKE SURE WE'RE RUNNING AS ROOT ##
  266. ##---------------------------------------##
  267. ###########################################
  268.  
  269. #########################
  270. ##---------------------##
  271. ## BEGIN - CORE SCRIPT ##
  272. ##---------------------##
  273. #########################
  274.  
  275. if [ "$1" = "-h" ]; then
  276.     HELPTEXT
  277. else
  278.     if [ -z $1 ]; then
  279.         GET_INPUT
  280.     else
  281.         if [ -d $1 ] && [[ $2 =~ $RE ]]; then
  282.             TARGET_DIR="$1"
  283.             SIZE="$2"
  284.             GET_FILECOUNTER_CHOICE
  285.             CHECK_FILECOUNTER_CHOICE
  286.         elif [ -d $1 ] && [ -z $2 ]; then
  287.             TARGET_DIR="$1"
  288.             GET_TARGET_FILESIZE
  289.             GET_FILECOUNTER_CHOICE
  290.             CHECK_FILECOUNTER_CHOICE
  291.         fi
  292.     fi
  293. fi
  294. CHECK_TARGET_DIR_EXISTS
  295. DIR_SIZE="$(du -h $TARGET_DIR 2>/dev/null | tail -1 | awk '{print $1}')"
  296. mkdir -p /root/support/logs/sfs_logs
  297. clear
  298. HEADER
  299. SEARCH 2>&1 | tee searchfile
  300. 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
  301. PASTE searchfile
  302. mv searchfile /root/support/logs/sfs_logs/sfs_"$HOSTNAME"_"$(date +"%m-%d-%Y_%T")"
  303. printf "\n\n"
  304.  
  305. #######################
  306. ##-------------------##
  307. ## END - CORE SCRIPT ##
  308. ##-------------------##
  309. #######################
  310.  
  311. exit 0

Replies to sfs.sh rss

Title Name Language When
Xiaomi redmi 1s pc suite in english free download Anonymous bash 6 Years ago.
Hack-e-mail 3 скачать бесплатно Anonymous bash 6 Years ago.
Meghan trainor no mp3 download stafaband Anonymous bash 6 Years ago.
Zeus pan olimpu download pl torrent Anonymous bash 6 Years ago.
Microsoft office for mac free download full versio Anonymous bash 6 Years ago.
Sql для чайников 7-е издание скачать Anonymous bash 6 Years ago.
Nokia x2-02 прошивка модифицированная Anonymous bash 6 Years ago.
Password txt torrentsgames org Anonymous bash 6 Years ago.
Swansoft cnc simulator crack free download Anonymous bash 6 Years ago.
Pokemon ruby english rom download Anonymous bash 6 Years ago.
E-capture 601wd драйвер скачать Anonymous bash 6 Years ago.
Delux keyboard driver Anonymous bash 6 Years ago.
Wdmarvel key Anonymous bash 6 Years ago.
The fisherman and his soul краткое содержание Anonymous bash 6 Years ago.
Zz ward til the casket drops 320 torrent Anonymous bash 6 Years ago.

Reply to "sfs.sh"

Here you can reply to the paste above