Advertisement
flipje

shell.sh

Dec 28th, 2011
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 8.90 KB | None | 0 0
  1. #!/bin/bash
  2. # +-----------------------------------------------------------------------------------------+
  3. # |                                                                                         |
  4. # |                                                                                         |
  5. # |                                                                                         |
  6. # |                                                                                         |
  7. # | December 2011 flip hess [email protected]                                             |
  8. # +-----------------------------------------------------------------------------------------+
  9.  
  10. # Global variables:
  11.  
  12. PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
  13. SCRIPT_PATH="${0}"
  14. ARGS="${#}"
  15. REPOSITORY='/home/flip/subversion'
  16.  
  17. # Functions:
  18.  
  19.   # exit function
  20.   function die()
  21.   {
  22.     echo "Error in ${SCRIPT_PATH}:\n${1}"
  23.     echo "Escaping to bash-shell"
  24.     /bin/bash
  25.   }
  26.  
  27.   # Shows usage function.
  28.   function fShowIntro()
  29.   {
  30.    echo -e "Subversion Configurator shell v1.1 by Flip Hess December 2011\n"
  31.    echo -e " _____ _____  ____        _                       _             "
  32.    echo -e "| ____|__  / / ___| _   _| |____   _____ _ __ ___(_) ___  _ __  "
  33.    echo -e "|  _|   / /  \___ \| | | | '_ \ \ / / _ \ '__/ __| |/ _ \| '_ \ "
  34.    echo -e "| |___ / /_   ___) | |_| | |_) \ V /  __/ |  \__ \ | (_) | | | |"
  35.    echo -e "|_____/____| |____/ \__,_|_.__/ \_/ \___|_|  |___/_|\___/|_| |_|"
  36.    echo -e "                                                                "
  37.    echo -e "  ____             __ _                       _                 "
  38.    echo -e " / ___|___  _ __  / _(_) __ _ _   _ _ __ __ _| |_ ___  _ __     "
  39.    echo -e "| |   / _ \| '_ \| |_| |/ _\` | | | | '__/ _\` | __/ _ \| '__|    "
  40.    echo -e "| |__| (_) | | | |  _| | (_| | |_| | | | (_| | || (_) | |       "
  41.    echo -e " \____\___/|_| |_|_| |_|\__, |\__,_|_|  \__,_|\__\___/|_|       "
  42.    echo -e "                        |___/                                   "
  43.    echo "To create a new repository,  type 1"
  44.    echo "To delete a repository,      type 2"
  45.    echo "To change your ssh password, type 3"
  46.    echo "To change your web password, type 4"
  47.    echo "To add or change a web user, type 5"
  48.    echo ""
  49.    echo "To exit to a shell,          type s"
  50.    echo "To logoff and disconnect,    type q"
  51.    echo ""
  52.    echo ""
  53.    echo ""
  54.    echo ""
  55.   }
  56.  
  57.   # function create new repository
  58.   function fCreate()
  59.   {
  60.    REPO=0
  61.    while [ ${REPO} = 0 ]
  62.    do
  63.       # echo
  64.      echo -e "Now creating a new repository in ${REPOSITORY}."
  65.      echo -e "Current repositories are: $( ls ${REPOSITORY} | xargs echo )"
  66.      echo ""
  67.  
  68.      read -p "Please enter the name of your new repository --> " NAME
  69.      [ -n ${NAME} ] || { echo "No input! Please retry!"; continue; }
  70.      if [ -d ${REPOSITORY}/${NAME} ] ; then
  71.        { echo -e "The current repository allready exist! Please try again!" ; sleep 1; }
  72.      else
  73.          echo -e "Creating repository \"${NAME}\" in /home/subversion"
  74.          { cd ${REPOSITORY} && svnadmin create ${NAME}; } || die "Failed to create repository!"
  75.          sleep 1 ; read -p "Repository ${NAME} created. Do you want to create another one? [Y/n] --> " ANSWER
  76.          
  77.          if [ ${ANSWER} = 'n' ] || [ ${ANSWER} = 'N' ] || [ ${ANSWER} = 'No' ] || [ ${ANSWER} = 'NO' ] || [ ${ANSWER} = 'no' ] || [ ${ANSWER} = 'Nein' ] ; then
  78.            REPO=1
  79.          else
  80.            REPO=0
  81.          fi
  82.      fi
  83.    done
  84.    
  85.     echo "repository ${NAME} succesfully created in ${REPOSITORY}"
  86.    
  87.    return 0
  88.   }
  89.  
  90.   # function to delete an existing
  91.   function fDelete()
  92.   {
  93.    REPO=0
  94.    while [ ${REPO} = 0 ]
  95.    do
  96.       # echo
  97.      echo -e "Now deleting a repository in ${REPOSITORY}."
  98.      echo -e "Current repositories are: $( ls ${REPOSITORY} | xargs echo )"
  99.      echo ""
  100.  
  101.      read -p "Please enter the name of the repository you want to delete --> " NAME
  102.      [ -n ${NAME} ] || { echo "No input! Please retry!"; continue; }
  103.      if [ ! -d ${REPOSITORY}/${NAME} ] ; then
  104.        { echo -e "The given repository doesnt exist! Please try again!" ; sleep 1; }
  105.      else
  106.          sleep 1 ; read -p "Are you REALY sure you want to delete repository: ${NAME}  [N/y] --> " ANSWER
  107.          if [ ${ANSWER} = 'y' ] || [ ${ANSWER} = 'Y' ] || [ ${ANSWER} = 'Yes' ] || [ ${ANSWER} = 'YES' ] || [ ${ANSWER} = 'yes' ] || [ ${ANSWER} = 'Jup' ]
  108.          then
  109.            REPO=1
  110.            echo -e "Deleting repository \"${NAME}\" from /home/subversion"
  111.            { cd ${REPOSITORY} && rm -rf ${NAME}; } || die "Failed to delete repository!"
  112.          else
  113.            echo "Canceled!" ; REPO=1
  114.          fi
  115.       fi
  116.    done
  117.    
  118.    return 0
  119.   }
  120.   # change password function
  121.   function fPass()
  122.   {
  123.    PASS=0
  124.    while [ ${PASS} = 0 ]
  125.    do
  126.      # echo
  127.      echo -e "Changing password for user $(whoami)"
  128.      USER=$(whoami)
  129.      passwd ${USER}
  130.  
  131.      if [ ${?} = 0 ] ; then
  132.        echo "Password succesfully updated!"
  133.        PASS=1
  134.      else  
  135.        read -p "Something went wrong!, wanna try again? [Y/n] --> " ANSWER
  136.        if [ ${ANSWER} = 'No' ] || [ ${ANSWER} = 'NO' ] || [ ${ANSWER} = 'no' ] || [ ${ANSWER} = 'nein' ] || [ ${ANSWER} = 'N' ] || [ ${ANSWER} = 'n' ] ; then
  137.          echo "Password unchanged!"
  138.          sleep 1
  139.          PASS=1
  140.          return 0
  141.        else
  142.          echo Retry!
  143.          sleep 1
  144.        fi
  145.      fi
  146.    done
  147.  
  148.    return 0
  149.   }
  150.  
  151.   function fWebPass()
  152.   {
  153.    PASS=0
  154.    while [ ${PASS} = 0 ]
  155.    do
  156.      # echo
  157.      echo -e "Changing WEB password for user $(whoami)"
  158.      USER=$(whoami)
  159.      htpasswd /etc/apache2/pass/htpasswd.users ${USER}
  160.  
  161.      if [ ${?} = 0 ] ; then
  162.        echo "Password succesfully updated!"
  163.        PASS=1
  164.      else
  165.        read -p "Something went wrong!, wanna try again? [Y/n] --> " ANSWER
  166.        if [ ${ANSWER} = 'No' ] || [ ${ANSWER} = 'NO' ] || [ ${ANSWER} = 'no' ] || [ ${ANSWER} = 'nein' ] || [ ${ANSWER} = 'N' ] || [ ${ANSWER} = 'n' ] ; then
  167.          echo "Password unchanged!"
  168.          sleep 1
  169.          PASS=1
  170.          return 0
  171.        else
  172.          echo Retry!
  173.          sleep 1
  174.        fi
  175.      fi
  176.    done
  177.  
  178.    return 0
  179.   }
  180.  
  181.   function fAddUser()
  182.   {
  183.    PASS=0
  184.    while [ ${PASS} = 0 ]
  185.    do
  186.      # echo
  187.      echo -e "Adding Webuser or changing password of existing user......."
  188.      read -p "Wat is de naam van de user? --> " USERT
  189.      htpasswd /etc/apache2/pass/htpasswd.users ${USERT}
  190.  
  191.      if [ ${?} = 0 ] ; then
  192.        echo "Password succesfully updated!"
  193.        PASS=1
  194.      else
  195.        read -p "Something went wrong!, wanna try again? [Y/n] --> " ANSWER
  196.        if [ ${ANSWER} = 'No' ] || [ ${ANSWER} = 'NO' ] || [ ${ANSWER} = 'no' ] || [ ${ANSWER} = 'nein' ] || [ ${ANSWER} = 'N' ] || [ ${ANSWER} = 'n' ] ; then
  197.          echo "Password unchanged!"
  198.          sleep 1
  199.          PASS=1
  200.          return 0
  201.        else
  202.          echo Retry!
  203.          sleep 1
  204.        fi
  205.      fi
  206.    done
  207.  
  208.    return 0
  209.   }
  210.  
  211.  
  212.  
  213.   # The main function.
  214.   function fMain()
  215.   {
  216.   # read input
  217.   KEUZE=0
  218.  
  219.   while [ ${KEUZE} = 0 ]
  220.   do
  221.   read -p "Maak uw keuze --> " INPUT
  222.  
  223.     case "${INPUT}" in
  224.       1)
  225.        KEUZE='1'
  226.        fCreate
  227.        ;;
  228.       2)
  229.        KEUZE='2'
  230.        fDelete
  231.        ;;
  232.       3)
  233.        KEUZE='3'
  234.        fPass
  235.        ;;
  236.       4)
  237.        KEUZE='4'
  238.        fWebPass
  239.        ;;
  240.       5)
  241.        KEUZE='5'
  242.        fAddUser
  243.        ;;
  244.       s)
  245.        KEUZE='s'
  246.        { echo "To return to the menu type \"Exit\"" ; /bin/bash ; }  
  247.        ;;
  248.       q)
  249.        KEUZE='q'
  250.        exit 0
  251.        ;;
  252.       *)
  253.        { echo "Uw keuze wordt niet herkend. Probeert u het nog een keer!"; sleep 1;}
  254.        KEUZE=0
  255.        ;;
  256.     esac
  257.   done
  258.   fReturn
  259.  
  260.   }
  261.  
  262.   # return functie
  263.   function fReturn()
  264.   {
  265.    SET=0
  266.    while [ ${SET} = 0 ] ;
  267.    do
  268.      echo "All done! Wanna exit this script or restart?"
  269.      read -p "Restart or Exit? R/e --> " ANSWER
  270.  
  271.      if [ -z ${ANSWER} ] || [ ${ANSWER} = "" ] ; then
  272.         { echo "Restarting script" ; SET=1 ; continue; }
  273.      fi
  274.  
  275.      if [ ${ANSWER} = e ] ; then
  276.         { echo "Exiting in 2 seconds" ; sleep 2 ; exit 1; }
  277.      elif [ ${ANSWER} = E ] ; then
  278.         { echo "Exiting in 2 seconds" ; sleep 2 ; exit 1; }
  279.      elif [ ${ANSWER} = exit ] ; then
  280.         { echo "Exiting in 2 seconds" ; sleep 2 ; exit 1; }
  281.      elif [ ${ANSWER} = EXIT ] ; then
  282.         { echo "Exiting in 2 seconds" ; sleep 2 ; exit 1; }
  283.      elif [ ${ANSWER} = Exit ] ; then
  284.         { echo "Exiting in 2 seconds" ; sleep 2 ; exit 1; }
  285.      else
  286.        echo "Restarting script"
  287.        sleep 1
  288.        SET=1
  289.      fi
  290.   done
  291.    
  292.   if [ ${SET} = 1 ] ; then
  293.      fShowIntro
  294.      fMain
  295.   else
  296.       exit 1
  297.    fi
  298.  
  299.    return 0
  300.   }
  301.  
  302.   # show intro
  303.   fShowIntro
  304.  # Start the program:
  305.   fMain
  306.  
  307.  # Exit with previous return code:
  308.   exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement