[CentOS] Bash Script help...

Kumar, Ashish xml.devel at gmail.com
Fri May 8 06:02:35 UTC 2009


> I need to write a script that I will manually start (or a cron job in
> future) but I need it to do a number of things in order one after
> another.  How do i do that so everything gets dont as the steps depend
> on each other.
>
> Example:
>
> cd /system_backups/

# timestamp in YYYY-MM-DD format
TIME_STAMP="$(date +%Y-%m-%d)"

# ip address of remote host to scp files to
REMOTE_IP="10.0.0.X"

# comma separated list of users to receive notification alerts
$AUDIENCE="user1 at example.com,user2 at example.com"
cd /system_backups


> tar cvf apache-conf.tar /etc/httpd/conf/*
> gzip -v9 apache-conf.tar

tar cvfz apache-conf.tar.gz /etc/httpd/conf
if [[ $? -ne 0 ]]
then
    echo "Failed" | /bin/mail -s "Apache configuration directory backup failed"
    # no more execution since previous step did not succeed
    exit -1
fi

> tar cvf apache-data.tar /var/www/*
> gzip -v9 apache-data.tar

tar cvfz apache-data.tar.gz /var/www
if [[ $? -ne 0 ]]
then
    echo "Failed" | /bin/mail -s "Apache data directory backup failed"
    exit -1
fi

> then last step...
> tar cvf <current_date>-system_backup.tar <all> the gzip files above
> gzip -v9 <current_date>-system_backup.tar

tar cvfz ${TIME_STAMP}-system-backup.tar.gz apache-conf.tar.gz
apache-data.tar.gz
if [[ $? -ne 0 ]]
then
    echo "Failed" | /bin/mail -s "Apache system backup failed"
    exit -1
fi

>
> scp <current_date>-system_backup.tar.gz user at 10.0.0.1:/.

scp ${TIME_STAMP}-system-backup.tar.gz user at 10.0.0.1:/
if [[ $? -ne 0 ]]
then
    echo "Failed" | /bin/mail -s "Apache scp transfer failed"
    exit -1
else
    echo "Success" | /bin/mail -s "Apache system backup success" $AUDIENCE
    exit 0
fi


> My questions:
> 1. How do I execute each statement and make sure subsequent statements
> are not executed until the previous is done?

if [[ $? -ne 0 ]] statement does that for you

> 2. How do I error check so if a step fails the script stops?

exit X

> 4. when I want to run the scp to send over the file to another machine
> for safety, how can I have it know the password to the machine I am
> scp'ing to?

You need to setup password-less login first
Try
http://blogs.translucentcode.org/mick/archives/000230.html

> Can anyone provide insight for me?

This is a very basic script.  You can use functions for error checking
and make the code smaller etc.

> -Jason

Hope this helps.



More information about the CentOS mailing list