Syndication

Sponsors


Administration


Posted on June 24, 2009 at 10:17 am - by Corey DeGrandchamp

Shell Script – Server Maintenance

So here’s my first shell script, written for a server at work who has maintenance tasks that need to be completed, and the commands get tedious to input and remember, now all you have to remember is ./maintenance

The script automates 4 tasks that our server has. Restarting out PostgreSQL database, restarting apache, vacuuming the database, and running our custom import scripts, which has to be done as a specific user each day, and NOT as root… which has caused issues in the past, but now if you run them with the script I wrote, there’s no issue at all.

When launched, the script displays a menu for you, on which you make your choices.

scriptmenu

You can then make your choice, via number, and it will complete the task and prompt you to continue.
When a wrong choice is made it tells you that you need to select a number from the list. The help command gives you an idea of what each other command does, and exit obviously exits the script.

So here’s a video to demonstrate how the menu system works.

Its a simple shell script, but it works, and it works well for what it does.
And of course I’d want to share the actual script with you, and document it in my blog,
so here it is, Frank’s maintenance script!

#######################################################
#  _______        _            _                      #
# |__   __|      | |          | |                     #
#    | | ___  ___| |__        | | __ ___      ____ _  #
#    | |/ _ \/ __|  _ \   _   | |/ _` \ \ /\ / / _` | #
#    | |  __/ (__| | | | | |__| | (_| |\ V  V / (_| | #
#    |_|\___|\___|_| |_|  \____/ \__,_| \_/\_/ \__,_| #
#                                                     #
#           www.techjawa.com/category/code            #
#             www.corey.degrandchamp.com              #
#                                                     #
#######################################################
#                                                     #
# Written  By: Corey DeGrandchamp                     #
# Written  On: June 18, 2009                          #
# Written For: Michigan Drill Corporation             #
# Description: This shell script will automate all of #
#              the maintenance tasks on Frank.        #
#                                                     #
#######################################################
#                                                     #
# Edit   Date: June 24, 2009                          #
# Edit     By: Corey DeGrandchamp                     #
# About  Edit: Fixed script so the heading/title will #
#              show every time now, also made it      #
#              pause and wait for the ENTER key to    #
#              be pressed before it continues.        #
#                                                     #
#######################################################

#!/bin/bash

# Display the title.
clear
echo '
     __  __    __    ____  _  _  ____  ____  _  _    __    _  _  ___  ____
    (  \/  )  /__\  (_  _)( \( )(_  _)( ___)( \( )  /__\  ( \( )/ __)( ___)
     )    (  /(__)\  _)(_  )  (   )(   )__)  )  (  /(__)\  )  (( (__  )__)
    (_/\/\_)(__)(__)(____)(_)\_) (__) (____)(_)\_)(__)(__)(_)\_)\___)(____)

	'
# Display possible choices.
CHOICES="RESTART_POSTGRESQL RESTART_APACHE VACUUM_DATABASE RUN_IMPORTS HELP EXIT"
# Define commands for choices.
select choice in $CHOICES; do
	if [ "$choice" = "RESTART_POSTGRESQL" ]; then
		/etc/rc.d/init.d/postgresql restart
		echo ""
		echo ""
		echo ""
		echo ""
		echo "Finished restarting PostgreSQL."
		echo ""
		echo "Press ENTER to continue."
		read
		clear
	elif [ "$choice" = "RESTART_APACHE" ]; then
		service httpsd restart
		echo ""
		echo ""
		echo ""
		echo ""
		echo "Finished restarting Apache."
		echo ""
		echo "Press ENTER to continue."
		read
		clear
	elif [ "$choice" = "VACUUM_DATABASE" ]; then
		su ********-c "/usr/bin/vacuumdb -* *******"
		echo ""
		echo ""
		echo ""
		echo ""
		echo "Finished vacuuming the database."
		echo ""
		echo "Press ENTER to continue."
		read
		clear
	elif [ "$choice" = "RUN_IMPORTS" ]; then
		su ********-c "/home/********/********/********/IMPORT"
		echo ""
		echo ""
		echo ""
		echo ""
		echo "Finished running the imports."
		echo ""
		echo "Press ENTER to continue."
		read
		clear
	elif [ "$choice" = "HELP" ]; then
		clear
		echo "RESTART_POSTGRES"
		echo "     - Useful for when SOEFIE giving errors, or functioning slowly."
		echo ""
		echo "RESTART_APACHE"
		echo "     - When changes are made to websites, or websites are not working."
		echo ""
		echo "VACUUM_DATABASE"
		echo "     - This will vacuum the veritime database, clearing our all of the junk."
		echo ""
		echo "RUN_IMPORTS"
		echo "     - Runs the imports from the AS/400 to SOEFIEs database."
		echo ""
		echo "HELP"
		echo "     - Displays this menu"
		echo ""
		echo "EXIT"
		echo "     - Exits the program."
		echo ""
		echo ""
		echo ""
		echo ""
		echo "Press ENTER to continue."
		read
		clear
	elif [ "$choice" = "EXIT" ]; then
		clear
		exit
	else
		echo ""
		echo ""
		echo ""
		echo ""
		echo "Please choose a number from the list."
		echo ""
		echo "Press ENTER to continue."
		read
		clear
	fi
# Display the title after each choice again.
	echo '
     __  __    __    ____  _  _  ____  ____  _  _    __    _  _  ___  ____
    (  \/  )  /__\  (_  _)( \( )(_  _)( ___)( \( )  /__\  ( \( )/ __)( ___)
     )    (  /(__)\  _)(_  )  (   )(   )__)  )  (  /(__)\  )  (( (__  )__)
    (_/\/\_)(__)(__)(____)(_)\_) (__) (____)(_)\_)(__)(__)(_)\_)\___)(____)

	'
done

Some parts taken out to protect our security….

I know there are other ways to do what I achived here, but as I said before, this is my VERY FIRST shell script.

Tags:

Leave a Reply

Please log in with your Facebook account -OR- fill in the forms below.

About This Blog

Tech Jawa is a blog founded by Corey DeGrandchamp, and loosely based on technology, tutorials, and video games. Please feel free to browse the site using the "Category" list on the left sidebar, and be sure to check out our live stream!

Connect

Sponsors