diff --git a/src/warden-client/sh/update.sh b/src/warden-client/sh/update.sh index 5bea9177329cfc85d824a43108bb12e32dd5c4e7..0657c1936b8ccc0f880f0b33dcbb1fb31b63239e 100755 --- a/src/warden-client/sh/update.sh +++ b/src/warden-client/sh/update.sh @@ -39,199 +39,213 @@ VERSION="1.0" #------------------------------------------------------------------------------- usage() { - echo "Usage: `basename $0` [-d <directory>] [-hV]" - echo "-d <directory> installation directory (default: /opt)" - echo "-h print this help" - echo "-V print script version number and exit" - echo - echo "Example: ./`basename $0` -d /opt" - echo - echo "Note: You must be root for running this script." - echo " For more information about update process, see README file (section Update)." - echo - exit 0 + echo "Usage: `basename $0` [-d <directory>] [-hV]" + echo "-d <directory> installation directory (default: /opt)" + echo "-h print this help" + echo "-V print script version number and exit" + echo + echo "Example: ./`basename $0` -d /opt" + echo + echo "Note: You must be root for running this script." + echo " For more information about update process, see README file (section Update)." + echo + exit 0 } version() { - echo "`basename ${0}` - current version is $VERSION" - exit 0 + echo "`basename ${0}` - current version is $VERSION" + exit 0 } err() { - echo "FAILED!" - cat $err - rm -rf $err - rm -rf $backup_dir - echo - echo "Update to $package_name package FAILED!!!" - exit 1 + echo "FAILED!" + cat $err + rm -rf $err + rm -rf $backup_dir + echo + echo "Update from $old_package_name to $package_name package FAILED!!!" + exit 1 } err_clean() { - echo "FAILED!" - echo " -> Reverting changes of warden client package ... OK" - rm -rf "$client_path/*" > /dev/null 2>&1 - cp -R "$backup_dir/*" $client_path - cat $err - rm -rf $err - rm -rf $backup_dir - echo - echo "Update to $package_name package FAILED!!!" - exit 1 + echo "FAILED!" + echo " -> Reverting changes of warden client package ... OK" + rm -rf "$client_path/*" > /dev/null 2>&1 + cp -R "$backup_dir/*" $client_path + cat $err + rm -rf $err $backup_dir + echo + echo "Update from $old_package_name to $package_name package FAILED!!!" + exit 1 } os_chck() { - OS=`uname` - if [ "$OS" != "Linux" ]; then - echo "Sorry, unsupported operating system detected - \"$OS\"!" - exit 1 - fi + OS=`uname` + if [ "$OS" != "Linux" ]; then + echo "Sorry, unsupported operating system detected - \"$OS\"!" + exit 1 + fi } shell_chck() { - SHELL=`echo $SHELL` - if [ "$SHELL" != "/bin/bash" ]; then - echo "Sorry, this script is usable in Bourne Again Shell (bash) only!" - exit 1 - fi + SHELL=`echo $SHELL` + if [ "$SHELL" != "/bin/bash" ]; then + echo "Sorry, this script is usable in Bourne Again Shell (bash) only!" + exit 1 + fi } root_chck() { - if [ $UID -ne 0 ]; then - echo "You must be root for running this script!" - exit 1 - fi + if [ $UID -ne 0 ]; then + echo "You must be root for running this script!" + exit 1 + fi } params_chck() { - if [ -z $prefix ]; then - prefix=/opt - echo "Warning: parameter -d <directory> is not set - default installation directory is $prefix!" - fi + if [ -z $prefix ]; then + prefix=/opt + echo "Warning: parameter -d <directory> is not set - default installation directory is $prefix!" + fi +} + + +obtain_package_version() +{ + if [ -f $old_package_version_file ]; then + old_package_version=`cat $old_package_version_file` + else + echo "Sorry, but warden-client package is not installed!" + echo "For installation of warden client package please use install.sh script." + exit 1 + fi } perl_chck() { - echo -n "Checking Perl interpreter ... " - which perl 1>/dev/null; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - echo "FAILED!" - echo "Error: Perl interpreter is not installed!" - exit 1 - fi + echo -n "Checking Perl interpreter ... " + which perl 1>/dev/null; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + echo "FAILED!" + echo "Error: Perl interpreter is not installed!" + exit 1 + fi } modules_chck() { - for module in ${modules[@]}; - do - echo -n "Checking $module module ... " - perl -e "use $module" 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err - fi - done + for module in ${modules[@]}; + do + echo -n "Checking $module module ... " + perl -e "use $module" 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err + fi + done } installation_dir_chck() { - echo -n "Checking installation directory ... " - if [ ! -d $prefix ]; then - echo "FAILED!" - ls $prefix - exit 1 - else - echo "OK" - fi + echo -n "Checking installation directory ... " + if [ ! -d $prefix ]; then + echo "FAILED!" + ls $prefix + exit 1 + else + echo "OK" + fi } warden_dir_chck() { - echo -n "Checking warden client directory ... " - if [ ! -d $client_path ]; then - echo "FAILED!" - ls $prefix - exit 1 - else - echo "OK" - fi + echo -n "Checking warden client directory ... " + if [ ! -d $client_path ]; then + echo "FAILED!" + ls $prefix + exit 1 + else + echo "OK" + fi } backup() { - echo -n "Backing-up warden client directory ... " - mkdir $backup_dir - cp -R $client_path $backup_dir 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err - fi + echo -n "Backing-up warden client directory ... " + mkdir $backup_dir + cp -R $client_path $backup_dir 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err + fi } obtain_warden_user() { - echo -n "Obtaining warden client directory owner ... " - user=`stat -c %U $conf_file` 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err - fi + echo -n "Obtaining warden client directory owner ... " + user=`stat -c %U $conf_file` 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err + fi } update_warden_dir() { - echo -n "Updating warden client directory ... " - rsync -q --recursive --archive --delete --exclude="warden-client/etc" --exclude="warden-client/var" warden-client $prefix 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err_clean - fi - - files=(CHANGELOG INSTALL LICENSE README README.cesnet) - for file in ${files[@]}; - do - cp -u "`dirname $0`/$file" "$client_path/doc" - done - cp -u "`dirname $0`/uninstall.sh" "$client_path" + echo -n "Updating warden client directory ... " + rsync -q --recursive --archive --delete --exclude="$dirname/warden-client/etc"\ + --include="$dirname/warden-client/etc/package_version.txt"\ + --exclude="$dirname/warden-client/var"\ + warden-client $prefix 2> $err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi + + files=(CHANGELOG INSTALL LICENSE README README.cesnet) + for file in ${files[@]}; + do + cp -u "$dirname/$file" "$client_path/doc" + done + cp -u "$dirname/uninstall.sh" "$client_path" } make_conf_file() { - echo -n "Creating configuration file ... " - uri=`cat $conf_file | grep '$URI'` - ssl_key_file=`cat $conf_file | grep '$SSL_KEY_FILE'` - ssl_cert_file=`cat $conf_file | grep '$SSL_CERT_FILE'` - ssl_ca_file=`cat $conf_file | grep '$SSL_CA_FILE'` -echo "# + echo -n "Creating configuration file ... " + uri=`cat $conf_file | grep '$URI'` + ssl_key_file=`cat $conf_file | grep '$SSL_KEY_FILE'` + ssl_cert_file=`cat $conf_file | grep '$SSL_CERT_FILE'` + ssl_ca_file=`cat $conf_file | grep '$SSL_CA_FILE'` + echo "# # warden-client.conf - configuration file for the warden sender/receiver client # @@ -255,23 +269,24 @@ $ssl_cert_file #------------------------------------------------------------------------------- $ssl_ca_file " > $conf_file 2> $err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err_clean - fi + + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi } change_permissions() { - echo -n "Changing permissions to updated package ... " - chown -R $user: $client_path 2>$err; ret_val=`echo $?` - if [ $ret_val -eq 0 ]; then - echo "OK" - else - err_clean - fi + echo -n "Changing permissions to updated package ... " + chown -R $user: $client_path 2>$err; ret_val=`echo $?` + if [ $ret_val -eq 0 ]; then + echo "OK" + else + err_clean + fi } @@ -291,12 +306,12 @@ shell_chck # read input while getopts "d:Vh" options; do - case $options in - d ) prefix=$OPTARG;; - h ) usage;; - V ) version;; - * ) usage;; - esac + case $options in + d ) prefix=$OPTARG;; + h ) usage;; + V ) version;; + * ) usage;; + esac done # root test @@ -306,13 +321,18 @@ root_chck params_chck # create variables -package_name="warden-client-$VERSION" +dirname=`dirname $0` +package_version=`cat $dirname/warden-client/etc/package_version.txt` client_path="$prefix/warden-client" etc="$client_path/etc" +old_package_version_file="$etc/package_version.txt" conf_file="$etc/warden-client.conf" err="/tmp/warden-err" backup_dir="/tmp/warden-backup" +# obtain version of old warden client +#obtain_package_version # ENABLE for next client package +old_package_version="1.0.0" echo echo "------------------------- Dependencies check-in -------------------------" @@ -323,7 +343,6 @@ perl_chck # Perl modules test modules_chck - echo echo "------------------------- Update process --------------------------------" @@ -351,10 +370,9 @@ change_permissions echo echo "Please check configuration file in $conf_file!" echo -echo "Update to $package_name package was SUCCESSFUL!!!" +echo "Update from $old_package_version to $package_version package was SUCCESSFUL!!!" # cleanup section -rm -rf $err -rm -rf $backup_dir +rm -rf $err $backup_dir exit 0