Listing 4 Pull_cluster
#!/bin/bash
################################################
#
# pull_cluster.sh -
#
# Purpose: - This script is designed to pull the new patch clusters and
# install them in the common patch directories.
#
# the patch script first moves the old patch to the production
# directories and then pulls the new patch clusters down to the
# appropriate development directories.
#
# This script will pull the folowing patch cluters
#
# 9_Recommended.zip
# 8_Recommended.zip
# 7_Recommended.zip
#
# J2SE_Solaris_9_Recommended.zip
# J2SE_Solaris_8_Recommended.zip
# J2SE_Solaris_7_Recommended.zip
#
# Special Requirements:
# These will be installed in the appropriate share directories.
#
# patchdir ----
# | Production -----
# |5.7
# |5.8
# |5.9
# |5.10
#
# | Development -----
# |5.7
# |5.8
# |5.9
# |5.10
#
# where Production must have the last patch cluster and Development
# must have the newest patch cluster.
#
# to accomplish this the patches are rotated from development to production
# and the the new cluster is obtained from sun's anonymous site...
#
# Caution:
# (1) Sun may be eliminating there anonymous site when
# they do they will have to provide a new link.
#
# (2) Run as root. (eventually put in root's cron)
#
#
##################################################
# DEBUG LINE
set -x
PRODUCTION="production"
DEVELOPMENT="development"
PATCHDIR="/patches"
OS=( 7 8 9 )
USER="--username"
PASSWD="--password"
URL="http://patches.sun.com/clusters"
UserID
UserPWD
PATH=$PATH:/usr/local/bin
export PATH
#######################
# #
# SUPPORT FUNCTIONS #
# #
# get_cluster() #
# md5() #
# check_development() #
# check_production() #
# #
#######################
function get_cluster()
{
wget --http-user=${UserID} --http-passwd=${UserPWD} \
"http://sunsolve.sun.com/private-cgi/ \
pdownload.pl?target=${1}_Recommended.zip&method=h" \
-O ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip
wget --http-user=${UserID} --http-passwd=${UserPWD} \
"http://sunsolve.sun.com/private-cgi/ \
pdownload.pl?target=J2SE_Solaris_${1}_Recommended.zip&method=h" \
-O ${PATCHDIR}/${DEVELOPMENT}/5.${1}/J2SE_Solaris_${1}_Recommended.zip
# old lines that worked in the past.. before sun mucked around
# wget ${USER} ${PASSWD} -P ${PATCHDIR}/${DEVELOPMENT}/5.${1} \
${URL}/${1}_Recommended.zip
# wget ${USER} ${PASSWD} -P ${PATCHDIR}/${DEVELOPMENT}/5.${1} \
${URL}/J2SE_Solaris_${1}_Recommended.zip
}
function md5()
{
digest -a md5 ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip > \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5
digest -a md5 ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip >\
${PATCHDIR}/${DEVELOPMENT}/5.${1}/J2SE_Solaris_${1}_Recommended.zip.md5
}
function cleanup_zip()
{
if [ -f ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip ]; then
rm ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip
fi
if [ -f ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5 ]; then
rm ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5
fi
if [ -f ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip ]; then
rm ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip
fi
if [ -f ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5 ]; then
rm ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5
fi
}
function check_development()
{
#
# First check Recommended patch cluster
#
if [ -f ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.zip ]; then
if diff ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.md5 \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5; then
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip.md5
else
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip.md5
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.zip
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5 \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.md5
fi
else
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.zip
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.zip.md5 \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/${1}_Recommended.old.md5
fi
#
# Now Check J2SE patch cluster
#
if [ -f ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.zip ]; then
if diff ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.md5 \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5; then
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5
else
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip
mv ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip \
${PATCHDIR}/${DEVELOPMENT}/ \
5.${1}/J2SE_Solaris_${1}_Recommended.old.zip
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5 \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.md5
fi
else
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.zip
cp ${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5 \
${PATCHDIR}/${DEVELOPMENT}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.md5
fi
}
function check_production()
{
#
# First check Recommended patch cluster
#
if [ -f ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.old.zip ]; then
if [ -f ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip ]; then
if diff ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.old.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip.md5; then
rm ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip
rm ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip.md5
else
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.old.zip
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.old.md5
fi
fi
else
if [ -f ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip ]; then
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.old.zip
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.zip.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/${1}_Recommended.old.md5
fi
fi
#
# Now Check J2SE patch cluster
#
if [ -f ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.zip ]; then
if [ -f ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip ]; then
if diff ${PATCHDIR}/${PRODUCTION}/ \
5.${1}/J2SE_Solaris_${1}_Recommended.old.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5; then
rm ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip
rm ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5
else
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.zip
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.md5
fi
fi
else
if [ -f ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip ]; then
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.zip
cp ${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.zip.md5 \
${PATCHDIR}/${PRODUCTION}/5.${1}/ \
J2SE_Solaris_${1}_Recommended.old.md5
fi
fi
}
########################
# #
# MAIN ROUTINE #
# #
########################
# A new approach here to grab only patches that need to
# be installed. Comment out the original code and use
# digests as flags to set up successful installation.
for i in "${OS[@]}"
do
cleanup_zip "$i"
get_cluster "$i"
md5 "$i"
check_development "$i"
check_production "$i"
done
|