BloodyFoxy

Swapfile control menu (for education & tutorials)

Apr 22nd, 2015
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.63 KB | None | 0 0
  1. #!/bin/bash
  2. #####################################################################################
  3. #####################################################################################
  4. #Script makes swapfile which can be used with other swapfiles at the same time
  5. #####################################################################################
  6. #####################################################################################
  7. #The following script was done for purpose of education. Licensed under the most free
  8. #license in the world WTFPL. See text below.
  9. #####################################################################################
  10. #####################################################################################
  11. #       DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  12. #                    Version 2, December 2004
  13. #
  14. # Copyright (C) 2015 Alexander Pinegin <darkbloodyfoxy # gmail,com>
  15. #
  16. # Everyone is permitted to copy and distribute verbatim or modified
  17. # copies of this license document, and changing it is allowed as long
  18. # as the name is changed.
  19. #
  20. #            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  21. #   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  22. #
  23. #  0. You just DO WHAT THE FUCK YOU WANT TO.
  24. #####################################################################################
  25. #####################################################################################
  26. #               _____ _   _  ___  _____                                          
  27. #              /  ___| | | |/ _ \|_   _|                                          
  28. #              \ `--.| | | / /_\ \ | |                                            
  29. #               `--. \ | | |  _  | | |                                            
  30. #              /\__/ / |_| | | | |_| |_                                          
  31. #              \____/ \___/\_| |_/\___/  
  32. #####################################################################################
  33. #####################################################################################                                                                                                                                                                                                          
  34. #  ___  _                          _            ______ _                  _      
  35. # / _ \| |                        | |           | ___ (_)                (_)      
  36. #/ /_\ \ | _____  ____ _ _ __   __| | ___ _ __  | |_/ /_ _ __   ___  __ _ _ _ __  
  37. #|  _  | |/ _ \ \/ / _` | '_ \ / _` |/ _ \ '__| |  __/| | '_ \ / _ \/ _` | | '_ \
  38. #| | | | |  __/>  < (_| | | | | (_| |  __/ |    | |   | | | | |  __/ (_| | | | | |
  39. #\_| |_/_|\___/_/\_\__,_|_| |_|\__,_|\___|_|    \_|   |_|_| |_|\___|\__, |_|_| |_|
  40. #                                                                    __/ |        
  41. #                                                                   |___/        
  42. #       _          ______ _                 _        ______                      
  43. #      | |         | ___ \ |               | |       |  ___|                      
  44. #  __ _| | ____ _  | |_/ / | ___   ___   __| |_   _  | |_ _____  ___   _          
  45. # / _` | |/ / _` | | ___ \ |/ _ \ / _ \ / _` | | | | |  _/ _ \ \/ / | | |        
  46. #| (_| |   < (_| | | |_/ / | (_) | (_) | (_| | |_| | | || (_) >  <| |_| |        
  47. # \__,_|_|\_\__,_| \____/|_|\___/ \___/ \__,_|\__, | \_| \___/_/\_\\__, |        
  48. #                                              __/ |                __/ |        
  49. #                                             |___/                |___/      
  50. #####################################################################################
  51. #####################################################################################
  52.  
  53. echo -ne "\e[36mSWAP FILE CREATOR SCRIPT"
  54. echo ""
  55. if [[ $EUID -ne 0 ]]; then
  56.    echo -ne "\e[31m\e[44mThis script must be run as root"
  57.    exit 1
  58. fi
  59. #Color back to default
  60. echo -ne "\e[39m\e[49m"
  61. while true; do
  62. echo "1) Create swap file"
  63. echo "2) Enable swap file"
  64. echo "3) Disable swap file"
  65. echo "4) Delete swap file"
  66. echo ""
  67. echo -ne "0) \e[31m\e[44mExit\e[39m\e[49m"
  68. echo ""
  69. echo "Enter number and confirm your input"
  70. read answer
  71. echo ""
  72. case "$answer" in
  73.     0)
  74.     echo "Exiting..."
  75.     exit 0
  76.     ;;
  77. # "1) Create swap file"
  78.     1)
  79.     while true; do
  80.     echo "Where would you like to place swap file?"
  81.     echo "Enter path or leave blank to use current directory"
  82.     read DIRECTORY
  83.     if [ "$DIRECTORY" == "" ]; then
  84.         echo "Using current directory"
  85.         DIRECTORY=$(pwd)
  86.     fi
  87.     if [ ! -d "$DIRECTORY" ]; then
  88.         echo "Directory doesn't exist!"
  89.         while true; do
  90.         echo "1) Make directory"
  91.         echo "2) Use current directory"
  92.         echo "3) Try again"
  93.         echo ""
  94.         echo -ne "0) \e[31m\e[44mExit\e[39m\e[49m"
  95.         echo ""
  96.         read answer
  97.         case $answer in
  98.         0)
  99.         echo "Exiting..."
  100.         exit 0
  101.         ;;
  102.         1)
  103.         mkdir $DIRECTORY
  104.         break
  105.         ;;
  106.         2)
  107.         DIRECTORY=$(pwd)
  108.         echo "Using current directory"
  109.         echo ""
  110.         break
  111.         ;;
  112.         3)
  113.         DIRECTORY="TRYAGAIN"
  114.         break;
  115.         ;;
  116.         *)
  117.         echo -ne "\e[31m\e[44mInvalid Input. Try again.\e[39m\e[49m"
  118.         echo ""
  119.         echo ""
  120.         ;;     
  121.         esac
  122.         done
  123.     fi
  124.     if [ "$DIRECTORY" == "TRYAGAIN" ]; then
  125. #Ask about swap place again
  126.     continue
  127.     fi
  128.  
  129. #Setting SWAP size
  130.         while true; do
  131.         echo "Set swap size in MiBits (1 MiBit = 1024 KiBits (IEC), 1MB = 1000KB (Metric)"
  132.         read answer
  133.         re='^[0-9]+$'
  134.         if [[ $answer =~ $re ]] ; then     
  135.         break
  136.         else
  137.         echo -ne "\e[31m\e[44Not a number, try again.\e[39m\e[49m"
  138.         echo ""
  139.         echo ""
  140.         continue
  141.         fi
  142.         done
  143. #Time to create a swap file
  144.         DIRECTORY+="/swap.img"
  145.         dd if=/dev/zero of=$DIRECTORY bs=1M count=$answer > /dev/null 2>&1
  146.         mkswap -L $USER $DIRECTORY > /dev/null 2>&1
  147.         echo "Done"
  148.         echo ""
  149.     break;         
  150.     done
  151.     ;;
  152. # "2) Enable swap file"
  153.     2)
  154.     while true; do
  155.     if [ "$DIRECTORY" == "" ]; then
  156.     echo "No swap location specified. Enter swap directory or nothing to use current dir"  
  157.     read DIRECTORY
  158.         if [ "$DIRECTORY" == "" ]; then
  159.             echo "Using current directory"
  160.             DIRECTORY=$(pwd)
  161.         fi
  162.         if [ ! -d "$DIRECTORY" ]; then
  163.         echo "Directory doesn't exist!"
  164.         echo -ne "\e[31m\e[44Try again.\e[39m\e[49m"
  165.         echo ""
  166.         echo ""
  167.         continue
  168.         fi 
  169.     fi
  170.     break
  171.     DIRECTORY+="/swap.img"
  172.     done
  173. #If swap is active arror will occur. Anyway it's active (enabled).
  174.     swapon $DIRECTORY > /dev/null 2>&1
  175.     echo "Swap enabled"
  176.     echo ""
  177.     ;;
  178. # "3) Disable swap file"
  179.     3)
  180.     while true; do
  181.     if [ "$DIRECTORY" == "" ]; then
  182.     echo "No swap location specified. Enter swap directory or nothing to use current dir"  
  183.     read DIRECTORY
  184.         if [ "$DIRECTORY" == "" ]; then
  185.             echo "Using current directory"
  186.             DIRECTORY=$(pwd)
  187.         fi
  188.         if [ ! -d "$DIRECTORY" ]; then
  189.         echo "Directory doesn't exist!"
  190.         echo -ne "\e[31m\e[44Try again.\e[39m\e[49m"
  191.         echo ""
  192.         echo ""
  193.         continue
  194.         fi 
  195.     fi
  196.     break
  197.     DIRECTORY+="/swap.img"
  198.     done
  199. #If swap is not active arror will occur. Anyway it's disabled. 
  200.     swapoff $DIRECTORY
  201.     echo "Swap disabled" > /dev/null 2>&1
  202.     echo ""
  203.     ;;
  204. # "4) Delete swap file"
  205.     4)
  206.     while true; do
  207.     if [ "$DIRECTORY" == "" ]; then
  208.     echo "No swap location specified. Enter swap directory or nothing to use current dir"  
  209.     read DIRECTORY
  210.         if [ "$DIRECTORY" == "" ]; then
  211.             echo "Using current directory"
  212.             DIRECTORY=$(pwd)
  213.         fi
  214.         if [ ! -d "$DIRECTORY" ]; then
  215.         echo "Directory doesn't exist!"
  216.         echo -ne "\e[31m\e[44Try again.\e[39m\e[49m"
  217.         echo ""
  218.         continue
  219.         fi 
  220.     fi
  221.     break
  222.     DIRECTORY+="/swap.img"
  223.     done
  224.     if [ -f "$DIRECTORY" ]; then
  225.     rm -f $DIRECTORY
  226.     echo "Swap removed"
  227.     else
  228.     echo "No swap file found"
  229.     echo ""
  230.     fi
  231.     ;;
  232.     *)
  233.     echo -ne "\e[31m\e[44mInvalid Input. Try again.\e[39m\e[49m"
  234.     echo ""
  235.     echo ""
  236.     ;;
  237. esac
  238. done
  239. exit 0
Advertisement
Add Comment
Please, Sign In to add comment