mirrorSLC.sh
script to automate SLC30X mirroring
Size 2.3 kB - File type text/x-shFile contents
#!/bin/sh # # script to synchronize remote repositories from linuxsoft.cern.ch # Author: Alexey Filin # message about failure mess="" # mirror directory mirror_dir="/opt" # mirror host name mirror_host=`hostname` # repository host name repository_host="linuxsoft.cern.ch" # mail address to send message on failure admin_address="root@localhost" # log file to dump stdout and stderr logfile="/var/log/mirrorSLC.log" # exit code of failed command exit_code=0 function mailAboutFailure { if [ "${mess}" != "" ]; then mail -s "ERROR: ${mirror_host}: failed to mirror SLC repository"\ "${admin_address}" <<EOF ${mess} EOF fi } ############################################################################# # check and set environment # redirrect stdin/stdout to log file exec >& ${logfile} || { exit_code=$? mess="\`exec >& ${logfile}' failed" mailAboutFailure exit ${exit_code} } comm="cd ${mirror_dir}" ${comm} || { exit_code=$? mess="\`${comm}' failed" mailAboutFailure exit ${exit_code} } comm="ping -c 3 -w 100 ${repository_host}" ${comm} || { exit_code=$? mess="\`${comm}' failed" mailAboutFailure exit ${exit_code} } ############################################################################# # mirror repositories # /cern/slc30X/i386 dl="apt/base\ docs\ dosutils\ extras/RPMS\ images\ isolinux\ kernel26/RPMS\ LICENSE\ README\ RELEASE-NOTES.html\ RPM-GPG-KEYs\ SL\ updates/RPMS\ updates/testing/RPMS\ updates/testing/RPMSonhold\ yum" for i in ${dl}; do comm="wget -r -N ftp://${repository_host}/cern/slc30X/i386/${i}" ${comm} || { exit_code=$? mess="${mess} \`${comm}' failed" } done # /dag/redhat/el3/en/i386 dl="RPMS.dag\ base" for i in ${dl}; do comm="wget -r -N ftp://${repository_host}/dag/redhat/el3/en/i386/${i}" ${comm} || { exit_code=$? mess="${mess} \`${comm}' failed" } done ############################################################################# # save log file and mail admin about failure if [ ${exit_code} -ne 0 ]; then mailAboutFailure suff=`date +%Y.%m.%d.%H:%M` sync comm="cp ${logfile} ${logfile}.${suff}" ${comm} || { mess="\`${comm}' failed" mailAboutFailure } fi exit ${exit_code}